DE102020108357A1 - Umkodieren vorhergesagter bilder in live-videostream-anwendungen - Google Patents

Umkodieren vorhergesagter bilder in live-videostream-anwendungen Download PDF

Info

Publication number
DE102020108357A1
DE102020108357A1 DE102020108357.2A DE102020108357A DE102020108357A1 DE 102020108357 A1 DE102020108357 A1 DE 102020108357A1 DE 102020108357 A DE102020108357 A DE 102020108357A DE 102020108357 A1 DE102020108357 A1 DE 102020108357A1
Authority
DE
Germany
Prior art keywords
frame
inter
intra
bit stream
segment
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
DE102020108357.2A
Other languages
English (en)
Inventor
Olivier Lapicque
Srinivas ANNE
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of DE102020108357A1 publication Critical patent/DE102020108357A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/85Providing additional services to players
    • A63F13/86Watching games played by other players
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/177Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a group of pictures [GOP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234345Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements the reformatting operation being performed only on part of the stream, e.g. a region of the image or a time segment
    • 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/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • 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/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • 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/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4781Games
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

In verschiedenen Beispielen kann ein Medienstrom von einem Umkodiersystem empfangen werden, das eine Umkodiereinrichtung nutzen kann, um ein mit dem Medienstrom verknüpftes Inter-Einzelbild in ein Intra-Einzelbild umzusetzen (z.B. in einem Intervall, auf einer Anforderung beruhend usw.). Das Intra-Einzelbild kann aus dem Inter-Einzelbild unter Verwendung von Parametern oder anderen Informationen, die mit dem Medienstrom verknüpft sind und mit diesem empfangen werden, umgesetzt werden. Das umgesetzte Intra-Einzelbild kann anstelle des initialen Inter-Einzelbilds einem aktualisierten Segment des Medienstroms zugeführt werden, um eine Speicherung des aktualisierten Segments - oder eines Teils davon - zur späteren Verwendung zu ermöglichen.

Description

  • HINTERGRUND
  • Livestreaming bezieht sich auf eine beliebige Anzahl von Diensten, bei welchen ein Live-Medien- (z.B. Video-)Strom oder -Signal digitalisiert, komprimiert und von einer Quelle zu einem Ziel übertragen wird, wo er dann dekomprimiert, dekodiert und angezeigt werden kann. Die Möglichkeit, Medien live zu streamen, hat ein enormes Spektrum an Möglichkeiten für häusliche, kommerzielle und behördliche Anwendungen erschlossen. Zum Beispiel hat sich Livestreaming in den letzten Jahren zu einem Instrument entwickelt, mit dem sich ein Publikum in globalem Umfang ansprechen lässt, und wobei Livestreaming-Dienste inzwischen eine Vielzahl von Plattformen von sozialen Medien und Profisport bis hin zu Filmen und Cloud-Videospielen (z.B. NVIDIA GeForce Now) umfassen. Während die Popularität des Livestreaming in den letzten Jahren zugenommen hat, trifft dies auch auf den Wunsch zu, Abschnitte eines Livestreams für eine spätere Verwendung (z.B. zum erneuten Ansehen, Verteilen, Teilen usw.) zu erfassen (z.B. zu speichern).
  • In herkömmlichen Systemen ist ein Erfassen von Abschnitten (z.B. Segmenten) eines Live-Medienstroms zur späteren Verwendung eine verarbeitungs-, speicher- und zeitintensive Aufgabe. Zum Beispiel erfordert Livestreaming mehr Rechnerverarbeitungs- und Netzwerkressourcen und verringert gleichzeitig eine Effizienz (geringe Latenzzeit bei Codierung und Stromauslieferung) im Vergleich zu anderen Streamingverfahren (z.B. Streaming von vorab aufgezeichnetem Video). Um den Verarbeitungs-Mehraufwand und die erforderliche Übertragungs-Bandbreite zu reduzieren und gleichzeitig die Wahrnehmungsqualität des Medienstroms zu gewährleisten (z.B. Minimieren visueller Beeinträchtigungen wie etwa Blockverzerrung, Unschärfe, Kantenaktivität, Rauschen, Ruckeln, Verpixelung usw.), verwenden viele Livestreaming-Systeme digitale Video-Codecs (z.B. Kodierer/Dekodierer, Kompressor/Dekompressor usw.), um Videodaten (z.B. Einzelbilder) in speziell angeordnete Serien zu komprimieren (z.B. zu kodieren), die jeweils als Bildgruppe (GOP) bezeichnet werden. Zum Beispiel kodieren viele herkömmliche Livestream-Mediensysteme Live-Medienströme (z.B. Sequenzen von Videoeinzelbildern) in eine GOP-Struktur (z.B. IPPPPPPPPPP), bei der das erste Einzelbild ein intra-kodiertes (I) Einzelbild (oder ein anderes Intra-Einzelbild) ist und die restlichen Einzelbilder prädiktiv kodierte (P) Einzelbilder (oder andere Inter-Einzelbild-Typen) sind. Typischerweise sind I-Einzelbilder (und andere Intra-Einzelbild-Typen) der größte Einzelbild-Typ (der die meisten Bits erfordert) und können auf der Empfangsseite dekodiert werden, ohne dass Daten aus einem anderen Einzelbild benötigt werden. Zum Beispiel kann ein I-Einzelbild Daten umfassen, die für Pixelwerte eines jeden Pixels in einem Einzelbild stehen. Im Gegensatz dazu sind P-Einzelbilder kleiner als 1-Einzelbilder und werden mit Bewegungs- oder Pixelwertänderungen des letzten I- oder P-Einzelbilds kodiert (z.B. umfasst ein P-Einzelbild nur die Informationen, die sich von dem/den vorherigen Einzelbild(ern) unterscheiden).
  • Infolge der für Livestreaming erforderlichen zusätzlichen Rechnerverarbeitungs- und Netzwerkressourcen wird aufgrund der geringen Kodierungslatenz, der reduzierten Bandbreitenanforderungen und des minimalen Speicherverbrauchs häufig ein ausschließlich Inter-Einzelbilder aufweisender GOP-Strukturtyp verwendet. Obwohl GOP-Struktur und -Länge erheblich variieren können, ist darüber hinaus die Verwendung von GOP-Strukturen mit längeren, ausschließlich Inter-Einzelbilder aufweisenden Sequenzen ebenfalls weit verbreitet, um Bandbreite zu verringern und Prozessorlast auf dem Kodierer und/oder Dekodierer zu verringern. Da sich Inter-(P)-Einzelbilder jedoch immer auf ein vorheriges oder zukünftiges Einzelbild (z.B. I-Einzelbild, P-Einzelbild, B-Einzelbild usw.) beziehen, erfordert ein Erfassen ausgewählter Abschnitte oder Segmente einer ausschließlich Inter-Einzelbilder aufweisenden GOP-Struktur in einem Live-Medienstrom, zunächst den gesamten Stream zu empfangen, den gesamten Stream zu speichern und dann die ausgewählten Abschnitte oder Segmente ausgehend von zumindest einem Intra-Einzelbild zu erfassen. Zum Beispiel kann ein Nutzer (z.B. Spieler, Streamer usw.) - per Livestream in einer Cloud-Spielarchitektur - eine Spielinstanz eines Videospiels spielen und beschließen, eine bestimmte Handlungssequenz aufzuzeichnen (z.B. einen Höhepunkt zu erzeugen). Wenn die Handlungssequenz an einer Stelle (z.B. Einzelbild) im Live-Medienstrom beginnt und der Live-Medienstrom eine ausschließlich P-Einzelbilder aufweisende GOP-Struktur ist, weil es kein Intra-Einzelbild gibt, auf das sich die P-Einzelbilder beziehen, könnte das Live-Medienstrom-System nicht mit einer Aufzeichnung an der gewünschten Stelle beginnen, ohne zuvor den gesamten Stream zu empfangen, zu speichern und zu analysieren.
  • In einer Bestrebung, diese Mängel zu beheben, spüren einige Live-Medienstrom-Erfassungssysteme das nächstgelegene I-Einzelbild auf, von dem aus die Aufnahme gestartet werden soll. Diese Methode erfordert jedoch, dass das System Speicherplatz vergeudet, um zusätzliche Abschnitte des Live-Medienstroms umzukodieren, sowie um Abschnitte des Stroms umzukodieren, an welchen der Nutzer kein Interesse hat. Da es zudem in einer ausschließlich P-Einzelbilder aufweisenden GOP-Struktur nur ein I-Einzelbild geben mag, ist das nächstgelegene I-Einzelbild immer das erste I-Einzelbild, was bedeutet, dass ein beträchtlicher Abschnitt von dem - wenn nicht sogar der gesamte - Datenstrom zu speichern ist, wie oben beschrieben. Hingegen transkodieren (z.B. dekodieren, umkodieren) andere herkömmliche Live-Medienstrom-Erfassungssysteme den gesamten Live-Medienstrom in ein anderes GOP-Strukturformat, um den ausgewählten Abschnitt des Live-Medienstroms zu speichern. Diese Methode verschwendet jedoch nicht nur Zeitressourcen, sondern erhöht auch die Prozessorlast auf dem System.
  • ZUSAMMENFASSUNG
  • Ausführungsbeispiele der vorliegenden Offenbarung beziehen sich auf Umkodierung von Einzelbildern zum Erfassen von Segmenten in Live-VideostromAnwendungen. Es werden Systeme und Verfahren offenbart, die eine Umkodiereinrichtung dazu nutzen, um (z.B. periodisch oder auf einer Indikation beruhend) bestehende Inter-Einzelbilder eines ausschließlich Inter-Einzelbilder aufweisenden GOP-strukturierten Medienstroms in eines oder mehrere Intra-Einzelbilder umzusetzen, um die selektive Erfassung von Segmenten eines Medienstroms zu ermöglichen und gleichzeitig die Prozessorlast zu minimieren (z.B. Verringern der Belastung der CPU- und/oder GPU-Nutzung) sowie das Erfordernis der Transkodierung und Speicherung eines gesamten Stroms vor einem Erzeugen eines Segments zu verringern.
  • Im Gegensatz zu herkömmlichen Systemen, wie etwa den oben beschriebenen, identifiziert und konvertiert das vorliegende System Inter-Einzelbilder eines Videostroms (z.B. Medienstrom) in Intra-Einzelbilder um, um ein selektives Aufzeichnen von Segmenten des Videostroms zu ermöglichen. Zum Beispiel mag ein Nutzer (z.B. ein Spieler), der eine Instanz eines Videospiels (z.B. einen Live-Medienstrom) spielt, eine bestimmte Handlungssequenz aufzeichnen und/oder speichern wollen (z.B. einen Höhepunkt erstellen), und die spezifische Stelle angeben wollen, an der der Nutzer wünscht, dass die Aufzeichnung beginnt. Bei Empfang einer Anforderung zum Speichern eines bestimmten Abschnitts eines Live-Medienstroms mag eine Umkodiereinrichtung das mit dem Startpunkt verknüpfte Inter-Einzelbild (z.B. P-Einzelbild oder B-Einzelbild) in ein Intra-Einzelbild (z.B. I-Einzelbild, Dekodierersofortauffrischungs-(IDR)-Einzelbild usw.) umsetzen, das mit dem ursprünglichen Live-Medienstrom konform ist (z.B. unter Verwendung eines Codecs wie etwa H.263, H.264, MPEG4, HEVC, 3GP, MPEG2 usw.).
  • In einem anderen Beispiel, anstatt auf dem Empfang eines Hinweises beruhend, eine Aufzeichnung zu starten, das Inter-Einzelbild (z.B. P-Einzelbild oder B-Einzelbild) in ein Intra-Einzelbild (z.B. I-Einzelbild, IDR-Einzelbild usw.) umzusetzen, kann die Umkodiereinrichtung den eingehenden Live-Medienstrom analysieren und anhand der GOP-Länge des Ausgabestroms und/oder einer hartkodierten Periodizität bestimmen, wann ein Intra-Einzelbild in den Strom einzufügen ist. Zum Beispiel kann die Umkodiereinrichtung hart kodiert sein, um Inter-Einzelbilder (z.B. P-Einzelbilder, B-Einzelbilder usw.) periodisch alle 30 Einzelbilder in Intra-Einzelbilder (z.B. I-Einzelbilder, IDR-Einzelbilder usw.) umzusetzen.
  • Nach der Umsetzung kann die Umkodiereinrichtung das Intra-Einzelbild in dem ursprünglichen Live-Medienstrom zuführen und die Kopfdaten nachfolgender Inter-Einzelbilder des Live-Medienstroms aktualisieren, um auf das neu umgesetzte und zugeführte Intra-Einzelbild zu verweisen. Der Live-Medienstrom mit dem zugeführten (z.B. eingesetzten, ersetzten) Intra-Einzelbild (oder einem Segment davon) kann dann aufgezeichnet und für eine spätere Verwendung (z.B. Ansehen, Teilen usw.) gespeichert werden. Infolgedessen kann das System von der Effizienz und den reduzierten Rechenanforderungen von ausschließlich Inter-Einzelbilder aufweisenden Strömen (z.B. reine P-Einzelbild-Ströme, wie etwa beim Livestreaming) profitieren, während es gleichzeitig imstande ist, Segmente des Stroms zu erfassen und zu speichern, ohne den gesamten Strom zuvor transkodieren zu müssen.
  • Figurenliste
  • Die derzeitigen Systeme und Verfahren zum Umkodieren von Einzelbildern zum Erfassen von Segmenten in Videostromanwendungen werden nachstehend unter Bezugnahme auf die beigefügten Zeichnungsfiguren ausführlich beschrieben, wobei
    • 1 ein Beispielsystemdiagramm für ein Umkodieren von Einzelbildern zum Erfassen von Segmenten in Videostromanwendungen ist, in Übereinstimmung mit einigen Ausführungsformen der vorliegenden Offenbarung;
    • 2A ein Datenflussdiagramm ist, das auf einem Empfang eines Hinweises beruhend, eine Aufzeichnung zu starten, ein Umkodieren eines Inter-Einzelbilds einer ausschließlich Inter-Einzelbilder aufweisenden GOP-Struktur in ein Intra-Einzelbild veranschaulicht, in Übereinstimmung mit einigen Ausführungsformen der vorliegenden Offenbarung;
    • 2B ist ein Datenflussdiagramm, das die periodische Umkodierung eines Inter-Einzelbilds in ein Intra-Einzelbild in Übereinstimmung mit einigen Ausführungsformen der vorliegenden Offenbarung veranschaulicht;
    • 2C ist ein Datenflussdiagramm, das auf einem Empfang eines Hinweises beruhend, eine Aufzeichnung zu starten, ein Umkodieren eines Inter-Einzelbilds einer IP-Einzelbild-GOP-Struktur in ein Intra-Einzelbild veranschaulicht, in Übereinstimmung mit einigen Ausführungsformen der vorliegenden Offenbarung;
    • 3 ist ein Flussdiagramm, das eine Methode zur Umkodierung von Einzelbildern zum Erfassen von Segmenten in Videostromanwendungen zeigt, in Übereinstimmung mit einigen Ausführungsformen der vorliegenden Offenbarung;
    • 4 ist ein Flussdiagramm, das eine Methode zur periodischen Umkodierung eines Inter-Einzelbilds in ein Intra-Einzelbild zeigt, in Übereinstimmung mit einigen Ausführungsformen der vorliegenden Offenbarung;
    • 5 ist ein Beispielsystemdiagramm für ein Spielstreaming-System, in Übereinstimmung mit einigen Ausführungsformen der vorliegenden Offenbarung; und
    • 6 ist ein Blockdiagramm einer beispielhaften Rechenvorrichtung, das sich zur Verwendung bei der Umsetzung einiger Ausführungsformen der vorliegenden Offenbarung eignet.
  • DETAILLIERTE BESCHREIBUNG
  • Es werden Systeme und Methoden im Zusammenhang mit der Umkodierung von Einzelbildern zum Erfassen von Segmenten in Live-Video-Stream-Anwendungen offenbart. Wenn ein Nutzer z.B. eine Instanz eines Videospiels spielt (z.B. in einer Wolken-Spielumgebung, wie etwa in der Umgebung der 5) oder ein Live- oder aufgezeichnetes Ereignis streamt, kann der Nutzer einen bestimmten Teil oder ein Segment des Streams aufzeichnen und/oder speichern und den spezifischen Punkt angeben, an dem die Aufzeichnung beginnen soll. In einigen Ausführungsformen empfängt eine Umkodiereinrichtung nach Empfang einer Anforderung zum Speichern eines bestimmten Abschnitts eines Live-Medienstroms oder eines voraufgezeichneten Medienstroms möglicherweise einen unkomprimierten Inter-Einzelbild, der mit der angegebenen Startposition aus dem Live-Medienstrom verknüpft ist. Die Umkodiereinrichtung kann das Inter-Einzelbild (z.B. P-Einzelbild oder B-Einzelbild) in ein Intra-Einzelbild (z.B. I-Einzelbild, IDR-Einzelbild usw.) umsetzen, das mit dem ursprünglichen Live-Medienstrom konform ist (z.B. unter Verwendung eines Codecs wie etwa H.263, H.264, MPEG4, HEVC, 3GP, MPEG2 usw.). Um sicherzustellen, dass das neukodierte oder umkodierte Intra-Einzelbild mit dem ursprünglichen Medienstrom konform ist, kann die Umkodiereinrichtung das Inter-Einzelbild zumindest auf Parametern beruhend, die direkt aus dem Sequenzparametersatz (SPS) und dem Bildparametersatz (PPS) des ursprünglichen Live-Medienstroms (z.B. Bitstrom) abgeleitet wurden, in ein Intra-Einzelbild umsetzen. In einigen Ausführungsformen wird das Inter-Einzelbild nicht auf dem Empfang eines Hinweises beruhend, eine Aufzeichnung zu starten, in ein Intra-Einzelbild umgesetzt, sondern die Umkodiereinrichtung kann den eingehenden Live-Medienstrom analysieren und bestimmt anhand der GOP-Länge des Ausgabestroms, wann ein Intra-Einzelbild in den Strom eingefügt werden muss. Beispielsweise kann die Umkodiereinrichtung hart kodiert sein, um periodisch Inter-Einzelbilder in Intra-Einzelbilder umzusetzen - wie etwa, ohne Einschränkung, alle 20 Einzelbilder, alle 30 Einzelbilder, jede Sekunde, alle drei Sekunden usw.
  • Nach der Umsetzung kann die Umkodiereinrichtung das Intra-Einzelbild mit dem ursprünglichen Live-Medienstrom zugeführten und die Kopfdaten der nachfolgender Inter-Einzelbilder des Live-Medienstroms aktualisieren, um auf den neu umgesetzten und zusammengeführten Intra-Einzelbild zu verweisen. Der Live-Medienstrom mit dem zusammengefügten (z.B. eingefügten) Intra-Einzelbild kann dann an einen Stream-Recorder gesendet werden, der den spezifischen Teil (z.B. das Capture-Segment) des Live-Medienstroms unter Verwendung des eingefügten Intra-Einzelbilder als Start- (oder Referenz-) Punkt extrahiert und das Capture-Segment erzeugt und an eine Dateisenke ausgibt. Die Dateisenke (z.B. eine MP4-Dateisenke, 3GP-Dateisenke, WMV-Dateisenke, FLV-Dateisenke usw.) kann das Erfassungssegment in einer Containerdatei (z.B. MPEG4-Containerdatei, 3GP-Containerdatei, MPEG-2-Containerdatei usw.) zur späteren Verwendung (z.B. zum Ansehen, Teilen, Streaming, Verteilen usw.) speichern.
  • Auf diese Weise ermöglichen die Systeme und Methoden der vorliegenden Offenbarung durch die Verwendung einer Umkodiereinrichtung zur periodischen Umsetzung vorhandener Inter-Einzelbilder eines Medienstroms mit GOP-Struktur (Live-Medienstrom) in Intra-Einzelbilder, die selektive Erfassung von Segmenten eines Live-Medienstroms bei gleichzeitiger Minimierung der Prozessorlast (z.B. Verringerung der Belastung von CPU und GPU) sowie die Verringerung der Notwendigkeit der Transkodierung und Speicherung eines gesamten Streams vor der Erzeugung eines Segments. Da nicht erst der gesamte Stream gespeichert und/oder transkodiert werden muss, kann die Erfassung von Segmenten schneller erfolgen als bei einem herkömmlichen, auf Transkodierung basierenden Dateierfassungssystem, da ein Intra-Einzelbild an jeder beliebigen Stelle in einen Medien-Stream eingefügt werden kann - wie etwa bei einem Live-Medienstrom mit einer GOP-Struktur, die nur aus P-Einzelbilder besteht.
  • Unter Bezugnahme auf 1 ist 1 ein Beispielsystemdiagramm eines Umkodiersystems 100 zum Umkodieren von Einzelbildern zum Erfassen von Segmenten in Videostromanwendungen (z.B. einer Cloud-Spielumgebung), in Übereinstimmung mit einigen Ausführungsformen der vorliegenden Offenbarung. Es sollte verstanden werden, dass diese und andere hier beschriebene Anordnungen nur als Beispiele angeführt werden. Andere Anordnungen und Elemente (z.B. Maschinen, Schnittstellen, Funktionen, Reihenfolgen, Gruppierungen von Funktionen usw.) können zusätzlich oder anstelle der gezeigten verwendet werden, und einige Elemente können ganz weggelassen werden. Darüber hinaus sind viele der hier beschriebenen Elemente funktionale Einheiten, die als diskrete oder verteilte Komponenten oder in Verbindung mit anderen Komponenten und in jeder geeigneten Kombination und an jedem geeigneten Ort umgesetzt werden können. Verschiedene Funktionen, die hier als durch Entitäten ausgeführt beschrieben werden, können durch Hardware, Firmware und/oder Software ausgeführt werden. Zum Beispiel können verschiedene Funktionen von einem Prozessor ausgeführt werden, der im Speicher gespeicherte Befehle ausführt.
  • Umkodiersystem 100 kann unter anderem folgende Komponenten und/oder Vorrichtungen umfassen: Bitstrom 102, Bitstromparser 104, Bitstromgeber 106, Videodekodierer 108, Videowiedergeber 110, Nutzervorrichtung 112, Umkodiereinrichtung 114, Bitstromrekorder 124, Dateisenke 126 und Datei 128. In einigen nicht einschränkenden Ausführungsformen kann das Umkodiersystem 100 (und/oder die Komponenten und/oder Merkmale davon) unter Verwendung eines Spielstreaming-Systems umgesetzt werden, wie etwa das Spielstreaming-System 500 der 5, das hier näher beschrieben wird. In anderen nicht einschränkenden Ausführungsformen kann das Umkodiersystem 100 (und/oder die Komponenten und/oder Merkmale davon) unter Verwendung eines beliebigen Medienstreaming-Systems umgesetzt werden, wie etwa ein System für Live-Streaming und/oder Streaming voraufgezeichneter Medien. Zusätzlich kann das Umkodiersystem 100 (und/oder Komponenten und/oder Merkmale davon) unter Verwendung einer oder mehrerer Rechenvorrichtungen umgesetzt werden, wie etwa Rechenvorrichtung 600 der 6, das hier näher beschrieben wird.
  • Jede der Vorrichtungen und/oder Komponenten des Umkodiersystems 100 kann über ein oder mehrere Netzwerke kommunizieren (nicht abgebildet). Das/die Netzwerk(e) kann/können ein Weitverkehrsnetz (WAN) (z.B. das Internet, ein öffentlich-vermittelndes Telefonnetz (PSTN) usw.), ein Lokalnetz (LAN) (z.B. Wi-Fi, ZigBee, Z-Wave, Bluetooth, Bluetooth Low Energy (BLE), Ethernet usw.) und/oder eine andere Art von Netz umfassen. In jedem Beispiel kann jede der Vorrichtungen und/oder Komponenten des Umkodiersystems 100 mit einer oder mehreren der anderen Vorrichtungen und/oder Komponenten über ein oder mehrere der Netzwerke kommunizieren.
  • Der Bitstromparser 104 kann allgemeinen dazu eingerichtet sein, einen eingehenden Bitstrom (z.B. Videostrom, Medienstrom usw.) - wie etwa Bitstrom 102 - in sein GOP-Struktur-Äquivalent zu parsen. Wie hier beschrieben kann der Bitstrom 102 einer von beliebig vielen Bitströmen sein, wie etwa ein Live-Medienvideo-Bitstrom oder ein vorab aufgezeichneter Medienvideo-Bitstrom. Der Bitstrom 102 kann durch Umkodiersystem 100 in einem komprimierten Format von einer entfernten Vorrichtung empfangen werden, wie etwa einem entfernten Server, einer entfernten Nutzervorrichtung und/oder einem anderen Vorrichtungstyp innerhalb einer Streaming-Umgebung, einer Cloud-Spielumgebung (z.B. 5) und/oder einer anderen Umgebung für Streaming-Medien. Darüber hinaus kann der Bitstrom 102 in einem von beliebig vielen Formaten vorliegen, wie etwa einem Motion Pictures Expert Group-(MPEG)-Videoformat (z.B. MP4), einem Apple QuickTime Movie-(MOV)-Videoformat, einem Windows Media Video-(WMV)-Videoformat, einem Flash Video Format (FLV), einem Audio Video Interleave-(AVI)-Videoformat und/oder einem anderen Videoformat. Die einem Bitstrom äquivalente GOP-Struktur, wie etwa der Bitstrom 102, kann einen von beliebig vielen GOP-Strukturtypen annehmen, wie etwa eine ausschließlich P-Einzelbilder aufweisende GOP-Struktur (oder eine andere ausschließlich Inter-Einzelbilder aufweisende Struktur) (z.B. IPPPPPP...P), sowie eine IP-Einzelbild-GOP-Struktur (z.B. IPPPIPPP...IPPP). Als Beispiel kann der Bitstromparser 104 den eingehenden Bitstrom 102, der mit einer Instanz eines Medienstroms (z.B. eines Videospielstroms in einer Cloud-Spielumgebung) verknüpft ist, in sein GOP-Struktur-Äquivalent parsen - wie etwa eine ausschließlich Inter-Einzelbilder aufweisende GOP-Struktur (z.B. IPPPPPP).
  • Der Bitstrom 102 kann mit verschiedenen Parametersätzen verknüpft sein, wie etwa einem Sequenzparametersatz (SPS) und einem Bildparametersatz (PPS). Ein Parametersatz kann allgemein Informationen (z.B. Pixelwerte usw.) umfassen, von denen nicht erwartet wird, dass sie sich in einer GOP-Struktur von Bild zu Bild ändern. Insbesondere kann ein SPS allgemein für eine Reihe von aufeinanderfolgenden Einzelbildern (z.B. eine Sequenz von Bildern) innerhalb einer GOP-Struktur gelten, während ein PPS allgemein für das Dekodieren (z.B. Dekomprimierung) eines oder mehrerer Einzelbilder innerhalb einer GOP-Struktur gelten kann. Der Bitstrom 102 kann ferner mit einem Quantisierungsparameter (QP) verknüpft sein, der dazu verwendet wird, Quantisierungswerte für Einzelbilder innerhalb der GOP-Struktur zu bestimmen. Ein QP kann allgemein regeln, wieviel räumliche Details für jedes Einzelbild während einer Videokodierung (z.B. Komprimierung) erhalten bleiben (z.B. gespeichert werden), sowie das Ausmaß, in dem visuelle Beeinträchtigungen (z.B. Blockverzerrung, Unschärfe, Kantenaktivität, Mückenrauschen, Klingeln, Quantisierungsrauschen, Ruckeln, Verpixelung usw.) während der Videokodierung in jedes Einzelbild eingebracht werden.
  • Der Bitstromgeber 106 kann allgemein dazu eingerichtet sein, den geparsten Bitstrom 102 in zwei separate (z.B. identische) Ausgabeströme aufzuteilen. Im Einsatz kann ein erster geparster Bitstrom dekodiert werden (z.B. durch den Videodekodierer 108) zur Anzeige an einen Nutzer (z.B. über die Nutzervorrichtung 112), und ein zweiter geparster Bitstrom kann dekodiert werden (z.B. durch den Videodekodierer 108) und für ein Aufzeichen eines Abschnitts des Bitstroms 102 - z.B. mit der Umkodiereinrichtung 114 - verwendet werden zur späteren Verwendung.
  • Wie oben beschrieben kann der Videodekodierer 108 allgemein dazu eingerichtet sein, Einzelbilder zu dekodieren (z.B. dekomprimieren), die in der GOP-Struktur des geparsten Bitstroms 102 umfasst sind. Der Videodekodierer 108 kann, ohne Einschränkung, eine beliebige Anzahl von Videodekodierertypen umfassen (z.B. MPEG-4 Teil 2, MPEG-4 usw.). Der Videowiedergeber 110 kann allgemein dazu eingerichtet sein, den geparsten und dekodierten Bitstrom 102 zu verarbeiten, um eine visuelle Darstellung des Bitstroms 102 zu erzeugen und auf dem Bildschirm der Nutzervorrichtung 112 anzuzeigen.
  • Die Nutzervorrichtung 112 kann ohne Einschränkung ein Smartphone, einen Laptop, einen Tablet-Rechner, einen Desktop-Rechner, eine tragbare Vorrichtung, eine Spielkonsole, ein Virtual-Reality-System (z.B., ein Headset, ein Rechner, eine Spielkonsole, Fernbedienung(en), Steuervorrichtung(en) und/oder andere Komponenten), ein NVIDIA SHIELD, eine Smart-Home-Vorrichtung, die einen intelligenten persönlichen Assistenten umfassen kann, und/oder eine andere Art von Vorrichtung, die dazu imstande ist, zumindest eine Anzeige eines Videostroms (z.B. Live-Videostrom, aufgezeichneter Videostrom usw.) zu unterstützen. Die Nutzervorrichtung 112 kann eine oder mehrere Komponenten (z.B. eine Kommunikationskomponente, eine Netzschnittstelle usw.) und Merkmale zur Kommunikation über ein oder mehrere Netze umfassen. Als ein nicht einschränkendes Beispiel kann die Nutzervorrichtung 112 zur Kommunikation innerhalb des Umkodiersystems 100 eine kabelgebundene Ethernet-Verbindung und/oder eine Wi-Fi-Verbindung über einen Router verwenden, um auf das Internet zuzugreifen. In einigen Beispielen kann die Nutzervorrichtung 112 einige oder alle Komponenten der Beispiel-Rechenvorrichtung 600 der 6 enthalten.
  • Die Umkodiereinrichtung 114 kann allgemein dazu eingerichtet sein, Einzelbilder eines dekodierten (z.B. dekomprimierten) Bitstroms umzukodieren, um die Erfassung von Segmenten des Bitstroms zu ermöglichen, die mit Videostromanwendungen verknüpft sind. Insbesondere kann die Umkodiereinrichtung 114 allgemein dazu eingerichtet sein, Inter-Einzelbilder eines Bitstroms in Intra-Einzelbilder umzukodieren, um ein Erfassen verschiedener Segmente des Bitstroms zu ermöglichen. In einigen Ausführungsformen kann die Umkodiereinrichtung 114 Einzelbilder eines geparsten und dekomprimierten Bitstroms auf dem Empfang eines Hinweises beruhend, eine Aufzeichnung zu starten, umkodieren. In anderen Ausführungsformen kann die Umkodiereinrichtung 114 Einzelbilder eines geparsten und dekomprimierten Bitstroms periodisch umkodieren, wie hier beschrieben. Die Umkodiereinrichtung 114 kann einen Umkodier-Einzelbildselektor 120, ein Intra-Einzelbildkodierer 116 und einen Einzelbildzuführer 118 umfassen. Der Umkodier-Einzelbildselektor 120 kann allgemein dazu eingerichtet sein, ein Inter-Einzelbild aus einem Abschnitt eines Bitstroms für ein Umkodieren in ein Intra-Einzelbild auszuwählen. Der Intra-Einzelbildkodierer 116 kann allgemein dazu eingerichtet sein, ein Inter-Einzelbild in ein Intra-Einzelbild umzukodieren. Der Einzelbildzuführer 118 kann generell dazu eingerichtet sein, das umkodierte Intra-Einzelbild in den Bitstrom einzuführen, um das ausgewählte Inter-Einzelbild zu ersetzen.
  • Wie hier beschrieben kann der Umkodier-Einzelbildselektor 120 allgemein dazu eingerichtet sein, ein Inter-Einzelbild aus einem Abschnitt eines Bitstroms zum Umkodieren in ein Intra-Einzelbild auszuwählen. In einigen Ausführungsformen kann das Umkodiersystem 100 einen Hinweis erhalten, eine Aufzeichnung eines Teils des Bitstroms 102 zu starten. Der Hinweis kann Informationen darüber umfassen, welches Einzelbild im Bitstrom als Ausgangspunkt für die Aufzeichnung zu verwenden ist. Zum Beispiel kann ein Signal erzeugt werden (z.B. infolge einer Nutzereingabe), das eine Stelle angibt, an der eine Aufzeichnung erzeugt werden soll. In einigen Beispielen kann das Signal einem exakten Einzelbild entsprechen, und das exakte Einzelbild kann ausgewählt werden. In anderen Beispielen kann das Signal einem oder mehreren Einzelbildern entsprechen, aber der Umkodier-Einzelbildselektor 120 kann ein anderes vorhergehendes oder nachfolgendes Einzelbild, das nicht dem Signal entspricht, auswählen (z.B. zum Aufbau in einem Puffer in Fällen, in denen das Signal nach dem tatsächlich gewünschten Startpunkt für die Aufnahme erzeugt wurde). In einem solchen Ausführungsbeispiel kann der Umkodier-Einzelbildselektor 120 auf Empfang der Indikation hin, die Aufzeichnung des Abschnitts des Bitstroms bei dem durch die Indikation angegebenen Einzelbild zu starten beruhend, das mit dem Startpunkt verknüpfte Einzelbild des Bitstroms 102 zum Umkodieren auswählen. In anderen Ausführungsformen kann der Umkodier-Einzelbildselektor dazu eingerichtet sein, periodisch zu bestimmen, welches Einzelbild in dem Bitstrom 102 zum Umkodieren von einem Inter-Einzelbild in ein Intra-Einzelbild ausgewählt werden soll. Zum Beispiel kann der Umkodier-Einzelbildselektor 120 dazu eingerichtet sein, jedes x-te Inter-Einzelbild (z.B. jedes 5. Inter-Einzelbild, jedes 30. Inter-Einzelbild usw.) zum Umkodieren in ein Intra-Einzelbild auszuwählen, oder er kann dazu eingerichtet sein, alle x Sekunden ein Einzelbild auszuwählen (z.B. jede Sekunde, alle zwei Sekunden usw.). In einer solchen Ausführungsform kann der Umkodier-Einzelbildselektor 120 von einem Nutzer des Umkodiersystems 100 eingerichtet sein. Sobald ein ausgewähltes Inter-Einzelbild durch das Intra-Einzelbildkodierer 116 in ein Intra-Einzelbild umgewandelt ist, kann dem Einzelbildzuführer 118 signalisiert werden, das umkodierte Intra-Einzelbild in den Bitstrom einzuführen und das ausgewählte Inter-Einzelbild zu ersetzen.
  • Um ein Inter-Einzelbild zum Umkodieren auszuwählen, kann der Umkodier-Einzelbildselektor 120 eine Anforderung (z.B. ein Signal, das für ein Anforderung steht) an den Videodekodierer 108 übertragen, dass eine unkomprimierte (z.B. dekomprimierte, dekodierte) Version des Inter-Einzelbilds, das umkodiert werden soll, erforderlich ist. Auf einem Empfang der Anforderung von der Umkodiereinrichtung 114 hin kann der Videodekodierer 108 das unkomprimierte Inter-Einzelbild, das zum Umkodieren ausgewählt wurde, zum Umkodieren an das Intra-Einzelbildkodierer 116 übertragen.
  • Wie hier beschrieben kann der Intra-Einzelbildkodierer 116 allgemein dazu eingerichtet sein, ein Inter-Einzelbild in ein Intra-Einzelbild umzukodieren. In einigen Ausführungsformen kann der Intra-Einzelbildkodierer 116 auf Kodierungsparametern beruhend, die mit dem Bitstrom 102 verknüpft sind, aus dem das Inter-Einzelbild ausgewählt wurde, ein Inter-Einzelbild in ein Intra-Einzelbild umkodieren. Durch Umkodieren eines Inter-Einzelbilds in ein Intra-Einzelbild, das auf Kodierungsparametern beruht, die zumindest mit dem Bitstrom 102 verknüpft sind, aus dem das Inter-Einzelbild ausgewählt wurde, kann das umkodierte Intra-Einzelbild dem Bitstrom, aus dem es kodiert wird, besser entsprechen (z.B. kann es wieder in den Bitstrom rückzugeführt werden, um das Inter-Einzelbild zu ersetzen). In nicht einschränkenden Ausführungsformen kann der Intra-Einzelbildkodierer 116 ein Inter-Einzelbild in ein Intra-Einzelbild umkodieren, indem er Parameter, Merkmale oder andere Informationen verwendet, die mit dem Bitstrom 102 verknüpft sind, wie etwa ein SPS, ein PPS, ein QP und/oder andere Parameter, Merkmale oder Informationen, die mit dem Bitstrom 102 verknüpft sind. In mindestens einer Ausführungsform kann der Quantisierungswert für das umkodierte Intra-Einzelbild auf mindestens eine Stufe niedriger gesetzt oder festgelegt werden als der Quantisierungswert für das Inter-Einzelbild, von dem ausgehend es umkodiert wurde. Auf diese Weise wird eine Konformität mit dem Bitstrom 102 (z.B. um sicherzustellen, dass das Intra-Einzelbild dem Bitstrom zugeführt werden kann, um das Inter-Einzelbild zu ersetzen) wahrscheinlicher erzielt.
  • Außerdem kann, obwohl sich das umkodierte Intra-Einzelbild geringfügig von dem Inter-Einzelbild unterscheiden kann, das es ersetzt, durch Umkodieren eines Inter-Einzelbilds in ein Intra-Einzelbild und dessen Zuführung in den Bitstrom 102 eine Wiederholfrequenz des Bitstroms 102 erhöht werden. Ein Erhöhen der Aktualisierungsrate kann Fehler verhindern oder verringern (z.B. eine Abnahme von Wahrnehmungsqualität des Bitstroms aufgrund von Blockverzerrung, Unschärfe, Kantenaktivität, Rauschen, Klingeln, Ruckeln, Verpixelung usw.). Ein Setzen des Quantisierungswerts für das umkodierte Intra-Einzelbild auf mindestens eine Stufe unter dem Quantisierungswert für das Inter-Einzelbild, das es in dem Bitstrom 102 ersetzt, trägt weiter dazu bei, eine Fehlerakkumulation zu verhindern.
  • Wie hier beschrieben kann der Einzelbildzuführer 118 allgemein dazu eingerichtet sein, das umkodierte Intra-Einzelbild dem Bitstrom zuzuführen, um das ausgewählte Inter-Einzelbild zu ersetzen. In Ausführungsformen kann der Intra-Einzelbildkodierer 116, nachdem der Intra-Einzelbildkodierer 116 das Inter-Einzelbild in das Intra-Einzelbild umkodiert hat, dem Einzelbildzuführer 118 mitteilen (z.B. ein Signal zusenden), dass das Inter-Einzelbild in ein Intra-Einzelbild umkodiert wurde. Auf dem Empfang eines Hinweises beruhend, dass das Inter-Einzelbild in ein Intra-Einzelbild umgewandelt wurde, kann der Einzelbildzuführer 118 das umkodierte Intra-Einzelbild dem Bitstrom (z.B. an der gleichen Stelle wie das ursprüngliche Inter-Einzelbild) zuführen, um das Inter-Einzelbild zu ersetzen. In einigen Ausführungsformen kann der Einzelbildzuführer 118, um das Intra-Einzelbild dem Bitstrom zuzuführen, die Kopfinformationen und/oder andere Informationen der Inter-Einzelbilder nach dem umkodierten Intra-Einzelbild (z.B. P-Einzelbilder) und/oder vor dem umkodierten Intra-Einzelbild (z.B. B-Einzelbilder) aktualisieren. Wie hier beschrieben können Inter-Einzelbilder (z.B. P-Einzelbilder oder B-Einzelbilder) allgemein auf ihre nächstgelegenen vorherigen Intra-Einzelbilder und/oder Inter-Einzelbilder verweisen. Daher kann jede in einem Inter-Einzelbild umfasste Kopfinformation angeben, auf welche(s) Intra-Einzelbild(er) und/oder Inter-Einzelbild(er) das Inter-Einzelbild verweisen soll. Um sicherzustellen, dass vorherige und/oder nachfolgende Inter-Einzelbilder auf das umkodierte Intra-Einzelbild verweisen, kann der Einzelbildzuführer 118 dazu eingerichtet sein, die Kopfinformation und/oder andere Informationen von Inter-Einzelbildern im Bitstrom zu aktualisieren, um sicherzustellen, dass das/der Erfassungssegment oder -abschnitt des Bitstroms einschließlich des umkodierten Intra-Einzelbilds korrekt wiedergegeben wird.
  • Der Bitstromrekorder 124 kann allgemein dazu eingerichtet sein, ein Segment eines Bitstroms einschließlich des umkodierten Intra-Einzelbilds zu extrahieren und das Segment des Bitstroms an eine Dateisenke 126 auszugeben, um es zu speichern oder in einer Datei zur späteren Verwendung (z.B. zum Betrachten, Teilen, Streaming, Übertragen usw.) zu speichern. In einer oder mehreren Ausführungsformen kann eine Dateisenke als ein Pipeline-Objekt umgesetzt sein, das Mediendaten als das Ziel für einen oder mehrere Medienströme empfängt. In Ausführungsformen kann der Bitstromrekorder 124 auf dem Empfang eines Hinweises beruhend, welches Segment des Bitstroms ein Nutzer aufzeichnen möchte, das Segment auswählen. In anderen Ausführungsformen kann der Bitstromrekorder 124 den Startpunkt des Segments auf dem Startpunkt beruhend wählen, der in einem Hinweis, eine Aufnahme zu starten, vermerkt ist.
  • Die Dateisenke 126 kann dazu eingerichtet sein, das/die Segment(e) des Bitstroms zu speichern, wie etwa in Form einer Containerdatei 128. Die Dateisenke 126 kann eine von beliebig vielen Mediensenken sein, wie etwa eine MP4-Dateisenke, eine 3GP-Dateisenke, WMV-Dateisenke, FLV-Dateisenke und/oder ähnliche. Eine Containerdatei, wie etwa die Containerdatei 128, kann eine von beliebig vielen Containerdateien sein, wie etwa eine MPEG4-Containerdatei, 3GP-Containerdatei, MPEG-2-Containerdatei usw.
  • Als Beispiel kann ein Zuschauer A, der eine Live-Stream-Instanz eines Spiels betrachtet, das von Spieler B in einer Cloud-Spielumgebung gespielt wird, beschließen, die Aufnahme zu einem bestimmten Zeitpunkt zu starten, der mit dem Beginn einer hochintensiven Kampfszene verknüpft ist. Wenn der Bitstrom, der mit dem Live-Stream des Spiels verknüpft ist, das von Spieler B gespielt und von Zuschauer A betrachtet wird, ein ausschließlich Inter-Einzelbilder aufweisender Bitstrom ist (z.B. eine IPPPPPP GOP-Struktur), kann in einem solchen Beispiel das Umkodiersystem 100 (unter Verwendung des Umkodier-Einzelbildselektors 120) das Inter-Einzelbild auswählen, das mit der Startposition oder der Aufzeichnung verknüpft ist, eine unkomprimierte Version des Einzelbilds von dem Videodekodierer 108 empfangen, das Inter-Einzelbild unter Verwendung des Intra-Einzelbildkodierers 116 in ein Intra-Einzelbild umwandeln und dann das Intra-Einzelbild unter Verwendung des Einzelbildzuführers 118 dem Bitstrom zuführen). Danach kann das System 100 mit dem Bitstromrekorder 124 das vom Betrachter A angezeigte Segment des Bitstroms aufzeichnen und unter Verwendung der Dateisenke 126 zur späteren Verwendung (z.B. Ansehen, Teilen usw.) speichern.
  • Unter Bezugnahme auf 2A-2C veranschaulichen 2A-2C verschiedene nicht einschränkende Beispiele für ein
    Umsetzen von Inter-Einzelbildern in Intra-Einzelbilder, um Segmente von Strömen mit verschiedenen GOP-Stream-Formaten zu erfassen. 2A-2C können unter Bezugnahme auf das und aus Sicht des Umkodiersystem(s) 100 der 1 beschrieben werden. Allerdings können andere oder alternative Systeme verwendet werden, um die in Bezug auf die 2A-2C beschriebenen Segmente zu erzeugen, ohne vom Geltungsbereich der vorliegenden Offenbarung abzuweichen.
  • Als Beispiel und unter Bezugnahme auf 2A ist 2A ein Datenflussdiagramm, das auf einem Empfang eines Hinweises beruhend, eine Aufzeichnung zu starten, das Umkodieren eines Inter-Einzelbilds einer ausschließlich Inter-Einzelbilder aufweisenden GOP-Struktur in ein Intra-Einzelbild veranschaulicht, in Übereinstimmung mit einigen Ausführungsformen der vorliegenden Offenbarung. In 2A kann ein Bitstrom 202 empfangen werden, wobei der Bitstrom 202 einen Bitstrom mit reiner GOP-Struktur zwischen den Einzelbilder enthalten kann. Auf einem Empfang einer Anforderung zum Erfassen eines Segments des Bitstroms 202 beruhend, wobei die Anforderung auf einen Startpunkt (z.B. ein Inter-Einzelbild 230) hinweisen kann, an dem die Aufzeichnung starten soll, kann das mit dem Startpunkt verknüpfte Inter-Einzelbild 230 identifiziert werden, wie in Segment 204 des Bitstroms 202 veranschaulicht ist. Um das in dem Segment 204 identifizierte Inter-Einzelbild 230 umzusetzen kann das Inter-Einzelbild 230 durch die Umkodiereinrichtung 114 verarbeitet werden. Wie hier im Detail beschrieben kann die Umkodiereinrichtung 114 das ausgewählte Inter-Einzelbild 230 zumindest auf einem SPS, einem PPS, einem QP und/oder anderen Informationen beruhend, die mit dem Bitstrom 202 verknüpft sind, in ein Intra-Einzelbild 232 umsetzen. Sobald das Inter-Einzelbild 230 in ein Intra-Einzelbild 232 umkodiert wurde, wie im aktualisierten Segment 206 des Bitstroms 202 dargestellt ist, kann das umkodierte Intra-Einzelbild 232 an der Stelle des ausgewählten (z.B. identifizierten) Inter-Einzelbilds 230 dem Segment 204 zugeführt werden (z.B. um das Inter-Einzelbild 230 zu ersetzen). In Ausführungsformen können beim Zuführen des umkodierten Intra-Einzelbilds 232 die Kopfdaten nachfolgender Inter-Einzelbilder aktualisiert werden, um auf das umkodierte Intra-Einzelbild 232 zu verweisen. Ein erfasstes Segment 208 (das z.B. das aktualisierte Segment 206 und/oder einen Teil davon umfassen kann), das mit der Anforderung verknüpft ist, ein Segment des Bitstroms 202 zu erfassen, kann dann aufgezeichnet und gespeichert werden (z.B. mit dem Bitstromrekorder 124 und/oder der Dateisenke 126 der 1). Daher kann mit diesem Verfahren das erfasste Segment 208 an dem umkodierten Intra-Einzelbild 232 beginnen.
  • Als weiteres Beispiel und unter Bezugnahme auf 2B ist 2B ein Datenflussdiagramm, das periodische Umkodierung eines Inter-Einzelbilds in ein Intra-Einzelbild in Übereinstimmung mit einigen Ausführungsformen der vorliegenden Offenbarung veranschaulicht. In 2B kann ein Bitstrom 210 empfangen werden, wobei der Bitstrom 210 einen Bitstrom mit ausschließlich Inter-Einzelbilder aufweisender GOP-Struktur umfassen kann. In Ausführungsformen kann das Umkodiersystem 100 in dem Bitstrom 212 durch schräge Linien gekennzeichnete Inter-Einzelbilder 240 (z.B. Inter-Einzelbild 240A, 240B und 240C), die mit dem Bitstrom 210 verknüpft sind, periodisch in Intra-Einzelbilder 242 (z.B. Intra-Einzelbilder 242A, 242B bzw. 242C) umsetzen. Zum Beispiel kann die Umkodiereinrichtung 114 jedes x-te Einzelbild oder ein Einzelbild nach jedem Zeitintervall x identifizieren, das von einem Inter-Einzelbild 240 in ein Intra-Einzelbild 242 umzusetzen ist, wie durch den Bitstrom 212 angezeigt ist. Wie durchgängig erwähnt kann die Umkodiereinrichtung 114 dazu eingerichtet sein (z.B. manuell oder anderweitig), Inter-Einzelbilder 240 aus dem Bitstrom 210 auf der Periodizität beruhend auszuwählen. Zum Beispiel kann die Umkodiereinrichtung 114 jedes 5. Inter-Einzelbild 240 oder jedes 30. Inter-Einzelbild 240 auswählen, um es in ein Intra-Einzelbild 242 umzusetzen. Wie hier im Detail beschrieben kann die Umkodiereinrichtung 114 die ausgewählten Inter-Einzelbilder 240 zumindest auf einem SPS, einem PPS, einem QP und/oder anderen Informationen beruhend, die mit Bitstrom 210 verknüpft sind, in Intra-Einzelbilder 242 umsetzen. Sobald die Inter-Einzelbilder 240 in die Intra-Einzelbilder 242 umkodiert sind, können die umkodierten Intra-Einzelbilder 242 an der Stelle der ausgewählten (z.B. identifizierten) Inter-Einzelbilder 240 dem Segment 210 zugeführt werden (z.B. um die Inter-Einzelbilder 240 zu ersetzen), wie im umgesetzten Segment 214 zu sehen ist. In Ausführungsformen können beim Zuführen der umkodierten Intra-Einzelbilder 242 die Kopfdaten nachfolgender und/oder vorhergehender Inter-Einzelbilder aktualisiert werden, um auf die umkodierten Intra-Einzelbilder 242 zu verweisen. Da das aktualisierte Segment 214 auf der Periodizität beruhend erzeugt werden kann, kann das erfasste Segment 216 beim Empfang einer Anforderung zum Erfassen eines erfassten Segments 216 des Datenstroms unter Verwendung des aktualisierten Segments 214 erzeugt werden.
  • Als weiteres Beispiel und mit Bezug auf 2C ist 2C ein Datenflussdiagramm, das auf einem Empfang eines Hinweises beruhend, eine Aufzeichnung zu starten, ein Umkodieren eines Inter-Einzelbilds einer IP-Einzetbild-GOP-Struktur in ein Intra-Einzelbild veranschaulicht, in Übereinstimmung mit einigen Ausführungsformen der vorliegenden Offenbarung. In 2C kann ein Bitstrom 218 empfangen werden, wobei der Bitstrom 218 einen IP-Einzelbild-GOP-Struktur-Bitstrom umfassen kann. Auf einem Empfang einer Anforderung zum Erfassen eines Segments des Bitstroms 218 beruhend, wobei die Anforderung auf einen Startpunkt (z.B. ein Inter-Einzelbild 250) hinweisen kann, an dem die Aufzeichnung zu starten ist, kann das mit dem Startpunkt verknüpfte Inter-Einzelbild 250 identifiziert werden. Um das in dem Segment 220 identifizierte Inter-Einzelbild 250 umzusetzen kann das Inter-Einzelbild 250 durch die Umkodiereinrichtung 114 verarbeitet werden. Wie hier im Detail beschrieben kann die Umkodiereinrichtung 114 das ausgewählte Inter-Einzelbild 250 zumindest auf einem SPS, PPS, QP und/oder anderen Informationen beruhend, die mit dem Bitstrom 218 verbunden sind, in ein Intra-Einzelbild 252 umsetzen. Sobald das Inter-Einzelbild 250 wie im aktualisierten Segment 222 dargestellt in ein Intra-Einzelbild 252 umkodiert wurde kann das umkodierte Intra-Einzelbild 252 an der Stelle des ausgewählten (z.B. identifizierten) Inter-Einzelbilds 250 dem erfassten Segment 224 zugeführt werden (z.B. um das Inter-Einzelbild 250 zu ersetzen). In Ausführungsformen können beim Zuführen des umkodierten Intra-Einzelbilds 252 die Kopfdaten nachfolgender Inter-Einzelbilder aktualisiert werden, um auf das umkodierte Intra-Einzelbild 252 zu verweisen. Das erfasste Segment 224 kann dann aus dem aktualisierten Segment 222 erfasst und gespeichert werden (z.B. mit dem Bitstromrekorder 124 und/oder der Dateisenke 126 der 1). Daher kann unter Verwendung dieses Vorganges das erfasste Segment 224 an dem umkodierten Intra-Einzelbild 252 starten, anstatt am ursprünglichen Intra-Einzelbild 254 - was zu einer genaueren oder begehrteren (z.B. auf der Nutzeranforderung beruhend) Gruppierung der Einzelbilder in dem erfassten Segment 224 führt.
  • Nun bezugnehmend auf 3 und 4 umfasst jeder Block der hier beschriebenen Verfahren 300 und 400 einen Rechenvorgang, der unter Verwendung einer beliebigen Kombination von Hardware, Firmware und/oder Software durchgeführt werden kann. Zum Beispiel können verschiedene Funktionen durch einem Prozessor ausgeführt werden, der im Speicher gespeicherte Befehle ausführt. Die Verfahren 300 und 400 können auch als rechnerverwendbare Anweisungen verkörpert sein, die auf Rechnerspeichermedien gespeichert sind. Die Verfahren 300 und 400 können durch eine eigenständige Anwendung, einen Dienst oder einen unterhaltenen Dienst (eigenständig oder in Kombination mit einem anderen unterhaltenen Dienst) oder ein Plug-in für ein anderes Produkt bereitgestellt werden, um nur einige zu nennen. Darüber hinaus werden die Verfahren 300 und 400 beispielhaft für das System der 1 beschrieben. Diese Verfahren 300 und 400 können jedoch zusätzlich oder alternativ durch ein beliebiges System oder eine beliebige Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hier beschriebenen.
  • Unter Bezugnahme auf 3 ist 3 ein Flussdiagramm, das ein Verfahren 300 zum Umkodieren von Einzelbildern zum Erfassen von Segmenten in Videostromanwendungen zeigt, in Übereinstimmung mit einigen Ausführungsformen der vorliegenden Offenbarung. Das Verfahren 300 umfasst in Block B302 ein Empfangen erster Daten, die für einen Strom stehen. Zum Beispiel kann der Bitstrom 102 durch den Bitstromparser 104 der 1 empfangen werden. Der Bitstrom 102 kann verknüpfte Informationen oder Daten umfassen, die für einen SPS, einen PPS, einen QP und/oder andere Informationen stehen, die mit Einzelbildern des Bitstroms 102 verknüpft sind. Der Bitstrom 102 kann ein Live-Videostrom, ein voraufgezeichneter Videostrom und/oder ein anderer Stromtyp sein. Nach einem Parsen, wie etwa durch den Bitstromparser 104, kann der Bitstrom 102 einem von beliebig vielen GOP-Strukturtypen verknüpft sein, wie etwa mit einem ausschließlich Inter-Einzelbilder aufweisenden GOP-Strukturtyp.
  • Das Verfahren 300 umfasst in Block B304 ein Bestimmen, dass ein Abschnitt eines Segments des Stromes nur Inter-Einzelbilder umfasst. Beispielsweise kann das Umkodiersystem 100 einen Hinweis empfangen, eine Aufzeichnung eines Abschnitts eines Bitstroms zu starten. Der Hinweis kann Informationen darüber umfassen, welches Einzelbild in dem Bitstrom als der Ausgangspunkt für die Aufzeichnung zu verwenden ist. In einer solchen Ausführungsform kann auf einem Empfangen des Hinweises beruhend, die Aufzeichnung des Abschnitts des Bitstroms an dem durch den Hinweis angegebenen Einzelbild zu starten, ein Umkodier-Einzelbildselektor 120 bestimmen, dass der Startpunkt (z.B. Abschnitt) des aufzuzeichnenden Segments ein Inter-Einzelbild ist und/oder dass keine Intra-Einzelbilder innerhalb einer Schwellenanzahl von Einzelbildern von dem Inter-Einzelbild liegen.
  • Das Verfahren 300 umfasst in Block B306 ein Umsetzen eines ersten Inter-Einzelbilds des Abschnitts des Segments des Stroms in ein Intra-Einzelbild auf Kodierungsparametern beruhend, die mit dem Strom verknüpft sind. Wie hier besprochen können Kodierungsparameter mindestens eines aus SPS, PPS und/oder QP umfassen. Zum Beispiel kann ein Umkodieren eines Inter-Einzelbilds in ein Intra-Einzelbild auf Kodierungsparametern beruhend, die mit dem Bitstrom verknüpft sind, sicherstellen, dass beim Umkodieren das umkodierte Intra-Einzelbild mit dem ursprünglichen Bitstrom konform ist (z.B. dem ursprünglichen Bitstrom zugeführt werden kann, um das Inter-Einzelbild zu ersetzen).
  • Das Verfahren 300 umfasst in Block B308 ein Zuführen des Intra-Einzelbilds mit das Segment des Stroms anstelle des ersten Inter-Einzelbilds. Um beispielsweise das Intra-Einzelbild in den Bitstrom zu verschmelzen, kann der Einzelbildzuführer 118 die Header das Inter-Einzelbilder nach und/oder vor dem umkodierten Intra-Einzelbild aktualisieren.
  • Das Verfahren 300 umfasst in Block B310 ein Speichern des Segments des Stroms. Zum Beispiel kann das Segment des Bitstroms 102 für eine spätere Verwendung (z.B. Ansehen, Teilen usw.) gespeichert werden. Hier kann der Bitstromrecorder 124 das Segment des aufzuzeichnenden Bitstroms extrahieren, wobei das Segment das umkodierte Intra-Einzelbild umfasst. Der Bitstromrekorder 124 kann das Segment des Bitstroms an die Dateisenke 126 ausgeben, um es in einer Datei zur späteren Verwendung zu speichern (z.B. Ansehen, Teilen, Übertragen usw.). In Ausführungsformen kann der Bitstromrekorder 124 auf einem Empfang eines Hinweises beruhend, welches Segment des Bitstroms ein Nutzer aufzeichnen möchte, das Segment auswählen. In anderen Ausführungsformen kann der Bitstromrekorder 124 den Startpunkt des aufzuzeichnenden und zu speichernden Segments auf dem Startpunkt beruhend wählen, der in dem Hinweis, eine Aufnahme zu starten, vermerkt ist.
  • Nun bezugnehmend auf 4 ist 4 ein Flussdiagramm, das ein Verfahren 400 zum periodischen Umkodieren eines Inter-Einzelbilds in ein Intra-Einzelbild zeigt, in Übereinstimmung mit einigen Ausführungsformen der vorliegenden Offenbarung. Das Verfahren 400 umfasst in Block B402 ein Empfangen erster Daten, die für einen Strom stehen, der eine Sequenz von Inter-Einzelbildern umfasst. Zum Beispiel kann der Bitstrom 102 durch Bitstromparser 104 empfangen werden. Der Bitstrom 102 kann verschiedene damit verknüpfte Informationen umfassen, wie etwa einen SPS, einen PPS, einen QP und/oder andere Informationen. Der Bitstrom 102 kann ein Live-Videostrom, ein voraufgezeichneter Videostrom und/oder ein anderer Stromtyp sein. Beim Parsen durch den Bitstromparser 104 kann der Bitstrom 102 mit einem von beliebig vielen GOP-Strukturtypen verknüpft werden, wie etwa mit einem ausschließlich Inter-Einzelbilder aufweisenden GOP-Strukturtyp.
  • Das Verfahren 400 umfasst in Block B404 ein Auswählen, in einem Intervall, eines Inter-Einzelbilds aus der Sequenz von Inter-Einzelbildern. Zum Beispiel kann das Umkodiersystem 100 in einigen Ausführungsformen, anstatt auf dem Empfang eines Hinweises beruhend, eine Aufzeichnung zu starten, ein Inter-Einzelbild in ein Intra-Einzelbild umzusetzen, den eingehenden Bitstrom analysieren und bestimmen, wann ein Intra-Einzelbild in den Bitstrom eingefügt werden muss. Das Umkodiersystem 100 kann auf der GOP-Länge des eingehenden Bitstroms 102 beruhend bestimmen, wann ein Inter-Einzelbild in ein Intra-Einzelbild umgewandelt werden soll. In anderen Ausführungsformen kann das Umkodiersystem 100 auf einer fest kodierten Periodizität beruhend (z.B. jedes 5. Einzelbild, jedes 30. Einzelbild, usw.) bestimmen, wann ein Inter-Einzelbild in ein Intra-Einzelbild umgewandelt werden soll.
  • Das Verfahren 400 umfasst in Block B406 ein Umsetzen des ausgewählten Inter-Einzelbilds in ein Intra-Einzelbild auf Kodierungsparametern beruhend, die mit dem Datenstrom verknüpft sind. Zum Beispiel können, wie hier besprochen, Kodierungsparameter zumindest eines aus SPS, PPS, QP und/oder andere Informationen umfassen, die mit Einzelbildern verknüpft sind, für die der Bitstrom 102 steht und die in diesen inbegriffen sind. Umkodieren eines Inter-Einzelbilds in ein Intra-Einzelbild unter Verwendung von Kodierungsparametern, die mit dem Bitstrom 102 verknüpft sind, aus dem das Inter-Einzelbild ausgewählt wurde, gewährleistet, dass beim Umkodieren das umkodierte Intra-Einzelbild mit dem ursprünglichen Bitstrom konform ist (z.B. dem ursprünglichen Bitstrom zugeführt werden kann, um das Inter-Einzelbild zu ersetzen).
  • Das Verfahren 400 umfasst in Block B408 ein Zuführen des Intra-Einzelbilds in den Strom anstelle des ausgewählten Inter-Einzelbilds. Zum Beispiel kann der Einzelbildzuführer 118 die Kopfinformation der Inter-Einzelbilder nach und/oder vor dem umkodierten Intra-Einzelbild aktualisieren, um das Intra-Einzelbild dem Bitstrom zuzuführen.
  • Nun bezugnehmend auf 5 ist 5 ein Beispielsystemdiagramm für ein Spielstreaming-System 500, in Übereinstimmung mit einigen Ausführungsformen der vorliegenden Offenbarung. 5 umfasst Spielserver 502 (der/die ähnliche Komponenten, Merkmale und/oder Funktionalität wie die Rechenvorrichtung 600 der 6 umfassen kann/können), Client-Vorrichtung(en) 504 (die ähnliche Komponenten, Merkmale und/oder Funktionalität wie die Rechenvorrichtung 600 der 6 umfassen kann/können) und Netzwerk(e) 506. In einigen Ausführungsformen kann das System 500 als zumindest ein Teil des Umkodiersystems 100 umgesetzt werden. Zum Beispiel kann die Cloud-Rechenumgebung des Systems 500 durch das Umkodiersystem 100 genutzt werden, wobei in solchen Ausführungsformen die Komponenten und/oder Funktionalität des Umkodiersystems jenen der Client-Vorrichtung(en) 504 ähnlich sein können.
  • In dem System 500 kann/können die Client-Vorrichtung(en) 504 Eingabedaten für eine Spielsitzung lediglich infolge von Eingaben in die Eingabevorrichtung(en) 526 empfangen, die Eingabedaten an den/die Spielserver 502 übertragen, kodierte Anzeigedaten von dem/den Spielserver(n) 502 empfangen und die Anzeigedaten auf der Anzeige 524 anzeigen. Daher wird rechen intensivere Berechnung und Verarbeitung auf den/die Spielserver 502 ausgelagert (z.B. wird ein Wiedergeben der Spielsitzung von der/den GPU(s) des/der Spielserver(s) 502 ausgeführt), und die Spielsitzung wird von dem/den Spielserver(n) 502 auf die Client-Vorrichtung(en) 504 gestreamt - was die Anforderungen an Client-Vorrichtung(en) 504 bzgl. Grafikverarbeitung und - wiedergabe vermindert.
  • Zum Beispiel kann eine Client-Vorrichtung 504 in Bezug auf eine Instanziierung einer Spielsitzung auf einem Empfang der Anzeigedaten von dem/den Spielserver(n) 502 beruhend ein Einzelbild der Spielsitzung auf der Anzeige 524 anzeigen. Die Client-Vorrichtung 504 kann eine Eingabe in eine der Eingabevorrichtung(en) empfangen und infolgedessen Eingabedaten erzeugen. Die Client-Vorrichtung 504 kann die Eingabedaten über die Kommunikationsschnittstelle 520 und über das/die Netzwerk(e) 506 (z.B. das Internet) an den/die Spielserver 502 übertragen, und der/die Spielserver 502 kann/können die Eingabedaten über die Kommunikationsschnittstelle 518 empfangen. Die CPU(s) kann/können die Eingabedaten empfangen, die Eingabedaten verarbeiten und Daten an die GPU(s) übertragen, die die GPU(s) dazu veranlassen, eine Wiedergabe der Spielsitzung zu erzeugen. Zum Beispiel können die Eingabedaten für eine Bewegung einer Figur des Nutzers in einem Spiel, Abfeuern einer Waffe, Nachladen, Passen eines Balls, Wenden eines Fahrzeugs usw. stehen. Die Wiedergabekomponente 512 kann die Spielsitzung wiedergeben (z.B. für das Ergebnis der Eingabedaten stehend) und die Wiedergebe-Erfassungskomponente 514 kann die Wiedergabe der Spielsitzung als Anzeigedaten erfassen (z.B. als Bilddaten, die das wiedergegebene Einzelbild der Spielsitzung erfassen). Der Kodierer 516 kann dann die Anzeigedaten kodieren, um kodierte Anzeigedaten zu erzeugen, und die kodierten Anzeigedaten können über das/die Netzwerk(e) 506 über die Kommunikationsschnittstelle 518 an die Client-Vorrichtung 504 übertragen werden. Die Client-Vorrichtung 504 kann die kodierten Anzeigedaten über die Kommunikationsschnittstelle 520 empfangen und der Dekodierer 522 kann die kodierten Anzeigedaten dekodieren, um die Anzeigedaten zu erzeugen. Die Client-Vorrichtung 504 kann dann die Anzeigedaten über die Anzeige 524 anzeigen.
  • In einigen Ausführungsformen können die kodierten Anzeigedaten für den Bitstrom 102 der 1 stehen, sodass ein Segment der kodierten Anzeigedaten durch das Umkodiersystem 100 erfasst werden kann, um ein erfasstes Segment der Spielinstanz zu erzeugen. Daher ermöglicht das Umkodiersystem 100 im Gegensatz zu herkömmlichen Systemen, die ein Empfangen, Speichern, und Verarbeiten des gesamten Stroms der Spielinstanz erfordern mögen, bevor ein Segment davon erfasst werden kann, ein Erzeugen von Segmenten (z.B. Höhepunkten) der Spielinstanz während eines Live-Spielgeschehens an jedem beliebigen Punkt innerhalb des Stroms.
  • 6 ist ein Blockdiagramm einer Beispiel-Rechenvorrichtung 600, die sich zur Verwendung bei einer Umsetzung einiger Ausführungsformen des Umkodiersystems 100 der vorliegenden Offenbarung eignet. Die Rechenvorrichtung 600 kann einen Bus 602 umfassen, der die folgenden Vorrichtungen direkt oder indirekt koppelt: Speicher 604, eine oder mehrere Zentralverarbeitungseinheiten (CPUs) 606, eine oder mehrere Grafikverarbeitungseinheiten (GPUs) 608, eine Kommunikationsschnittstelle 610, Ein-/Ausgabe-(I/O)-Anschlüsse 612, Ein-/Ausgabe-(I/O)-Komponenten 614, eine Leistungsversorgung 616 und eine oder mehrere Darstellungskomponenten 618 (z.B. Anzeige(n)).
  • Obwohl die verschiedenen Blöcke der 6 als über den Bus 602 mit Leitungen verbunden gezeigt sind, soll dies nicht einschränkend sein und dient nur der Übersichtlichkeit. Zum Beispiel kann in einigen Ausführungsformen eine Darstellungskomponente 618, wie etwa eine Anzeigevorrichtung, als I/O-Komponente 614 betrachtet werden (z.B. wenn die Anzeige ein Berührbildschirm ist). Als weiteres Beispiel können die CPUs 606 und/oder GPUs 608 Speicher umfassen (z.B. kann der Speicher 604 für ein zu dem Speicher der GPUs 608, der CPUs 606 und/oder anderer Komponenten zusätzliches Speichergerät stehen). Mit anderen Worten hat die Rechenvorrichtung der 6 lediglich veranschaulichenden Charakter. Es wird nicht zwischen Kategorien wie „Arbeitsstation“, „Server“, „Laptop“, „Desktop“, „Tablet“, „Client-Vorrichtung“, „Mobilvorrichtung“, „tragbare Vorrichtung“, „Spielkonsole“, „elektronische Steuereinheit (ECU)“, „Virtual-Reality-System“ und/oder anderen Vorrichtungs- oder Systemtypen unterschieden, da sie alle als in den Geltungsbereichs der Rechenvorrichtung der 6 fallend erachtet werden.
  • Der Bus 602 kann für einen oder mehrere Busse stehen, wie etwa einen Adressbus, einen Datenbus, einen Steuerbus oder eine Kombination davon. Der Bus 602 kann einen oder mehrere Bustypen umfassen, wie etwa einen Industriestandardarchitektur-(ISA)-Bus, einen erweiterten Industriestandardarchitektur-(EISA)-Bus, einen Videoelektronikstandardverband-(VESA)-Bus, einen Peripheriekomponentenverbindungs-(PCI)-Bus, einen Peripheriekomponentenverbindungs-Express-(PCle)-Bus und/oder einen anderen Bustyp.
  • Der Speicher 604 kann jedes einer Vielzahl von rechnerlesbaren Medien umfassen. Bei den rechnerlesbaren Medien können alle verfügbaren Medien sein, auf die die Rechenvorrichtung 600 zugreifen kann. Zu den rechnerlesbaren Medien können sowohl flüchtige als auch nichtflüchtige Medien wie auch austauschbare und nicht austauschbare Medien gehören. Als Beispiel und nicht als Einschränkung können die rechnerlesbaren Medien Rechnerspeichermedien und Kommunikationsmedien umfassen.
  • Rechnerspeichermedien können sowohl flüchtige als auch nichtflüchtige Medien und/oder austauschbare und nicht austauschbare Medien umfassen, die zur Speicherung von Informationen wie etwa rechnerlesbaren Anweisungen, Datenstrukturen, Programmmodulen und/oder anderen Datentypen mit einer beliebigen Methode oder Technologie umgesetzt sind. Zum Beispiel kann der Speicher 604 rechnerlesbare Anweisungen speichern (z.B. die für (ein) Programm(e) und/oder (ein) Programmelement(e), wie etwa ein Betriebssystem, stehen). Rechnerspeichermedien können, ohne darauf beschränkt zu sein, RAM, ROM, EEPROM, Flash-Speicher oder andere Speichertechnologien, CD-ROM, Digital Versatile Disks (DVD) oder andere optische Plattenspeicher, Magnetkassetten, Magnetband, Magnetplattenspeicher oder andere magnetische Speichergeräte oder jedes andere Medium umfassen, das zur Speicherung der gewünschten Informationen verwendet werden kann und auf die die Rechenvorrichtung 600 zugreifen kann. In der hier verwendeten Form umfassen Rechnerspeichermedien keine Signale an sich.
  • Die Kommunikationsmedien können rechnerlesbare Anweisungen, Datenstrukturen, Programmodule und/oder andere Datentypen in einem modulierten Datensignal wie etwa einer Trägerwelle oder einem anderen Transportmechanismus verkörpern und umfassen alle Informationsausliefermedien. Der Begriff „moduliertes Datensignal“ kann sich auf ein Signal beziehen, bei dem eine oder mehrere seiner Eigenschaften so gesetzt oder geändert wurden, dass Informationen im Signal kodiert werden. Als Beispiel und nicht als Einschränkung können Kommunikationsmedien kabelgebundene Medien wie etwa ein kabelgebundenes Netzwerk oder eine direkt verkabelte Verbindung, und drahtlose Medien wie etwa akustische, HF-, Infrarot- und andere drahtlose Medien umfassen. Kombinationen beliebigen der oben genannten sollten ebenfalls in den Geltungsbereich der rechnerlesbaren Medien einbezogen werden.
  • Die CPU(s) 606 kann/können dazu eingerichtet sein, die rechnerlesbaren Anweisungen auszuführen, um eine oder mehrere Komponenten der Rechenvorrichtung 600 zu steuern, um ein(en) oder mehrere der hier beschriebenen Umkodierungsverfahren und/oder - vorgänge durchzuführen. Die CPU(s) 606 kann/können jeweils einen oder mehrere Kerne enthalten (z.B. einen, zwei, vier, acht, achtundzwanzig, zweiundsiebzig usw.), die dazu imstande sind, eine Vielzahl von Software-Threads gleichzeitig zu verarbeiten. Die CPU(s) 606 kann/können jede Art von Prozessor umfassen und kann/können je nach Art der umgesetzten Rechenvorrichtung 600 verschiedene Arten von Prozessoren umfassen (z.B. Prozessoren mit weniger Kernen für mobile Vorrichtungen und Prozessoren mit mehr Kernen für Server). Zum Beispiel kann der Prozessor je nach Art der Rechenvorrichtung 600 ein ARM-Prozessor sein, der auf reduziertem Anweisungssatz beruhendes Rechnen (RISC) umsetzt, oder ein x86-Prozessor, der auf komplexem Anweisungssatz beruhendes Rechnen (CISC) umsetzt. Die Rechenvorrichtung 600 kann eine oder mehrere CPUs 606 zusätzlich zu einem oder mehreren Mikroprozessoren oder zusätzlichen Koprozessoren, wie etwa mathematische Koprozessoren, umfassen.
  • Die GPU(s) 608 kann/können durch die Rechenvorrichtung 600 zum Wiedergeben von Grafiken (z.B. 3D-Grafiken) verwendet werden. Die GPU(s) 608 kann/können hunderte oder tausende von Kernen umfassen, die dazu imstande sind, hunderte oder tausende von Software-Threads gleichzeitig zu verarbeiten. Die GPU(s) 608 kann/können infolge von Wiedergabebefehlen (z.B. Wiedergabebefehlen der CPU(s) 606, die über eine Host-Schnittstelle empfangen werden) Pixeldaten für Ausgabebilder erzeugen. Die GPU(s) 608 kann/können Grafikspeicher, wie etwa Bildschirmspeicher, zum Speichern von Pixeldaten umfassen. Der Anzeigespeicher kann als Teil des Speichers 604 vorgesehen sein. Die GPU(s) 708 kann/können zwei oder mehr parallel (z.B. über eine Verbindung) arbeitende GPU(s) umfassen. Wenn sie miteinander kombiniert werden, kann jeder Grafikprozessor 608 Pixeldaten für verschiedene Abschnitte eines Ausgabebildes oder für verschiedene Ausgabebilder erzeugen (z.B. ein erster Grafikprozessor für ein erstes Bild und ein zweiter Grafikprozessor für ein zweites Bild). Jede GPU kann ihren eigenen Speicher umfassen oder Speicher mit anderen GPUs teilen.
  • In Beispielen, in denen die Rechenvorrichtung 600 nicht die GPU(s) 608 umfasst, kann/können die CPU(s) 606 zum Wiedergeben von Grafiken verwendet werden.
  • Die Kommunikationsschnittstelle 610 kann einen oder mehrere Empfänger, Sender und/oder Transceiver umfassen, die es der Rechenvorrichtung 600 ermöglichen, mit anderen Rechenvorrichtungen über ein elektronisches Kommunikationsnetz, einschließlich drahtgebundener und/oder drahtloser Kommunikation, zu kommunizieren. Die Kommunikationsschnittstelle 610 kann Komponenten und Funktionalität umfassen, die eine Kommunikation über eine Anzahl verschiedener Netze ermöglichen, wie etwa drahtlose Netze (z.B. Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee usw.), drahtgebundene Netze (z.B. Kommunikation über Ethernet), Niederleistungs-Weitverkehrsnetze (z.B. LoRaWAN, SigFox usw.) und/oder das Internet.
  • Die I/O-Anschlüsse 612 können ermöglichen, die Rechenvorrichtung 600 logisch mit anderen Vorrichtungen zu koppeln, einschließlich der I/O-Komponenten 614, der Darstellungskomponente(n) 618 und/oder anderer Komponenten, von denen einige in die Rechenvorrichtung 600 eingebaut (z.B. integriert) sein können. Veranschaulichende I/O-Komponenten 614 umfassen ein Mikrofon, eine Maus, eine Tastatur, einen Joystick, ein Gamepad, einen Spielcontroller, eine Satellitenschüssel, einen Scanner, einen Drucker, eine drahtlose Vorrichtung usw. Die I/O-Komponenten 614 können eine natürliche Nutzerschnittstelle (NUI) bereitstellen, die Luftgesten, Stimme oder andere von einem Nutzer erzeugte physiologische Eingaben verarbeitet. In einigen Fällen können Eingaben zur weiteren Verarbeitung an ein geeignetes Netzelement übertragen werden. Eine NUI kann eine beliebige Kombination aus Spracherkennung, Stifterkennung, Gesichtserkennung, biometrischer Erkennung, Gestenerkennung sowohl auf dem Bildschirm als auch neben dem Bildschirm, Luftgesten, Kopf- und Augenverfolgung und Berührungserkennung (wie unten näher beschrieben), die mit einer Anzeige der Rechenvorrichtung 600 verknüpft ist, umsetzen. Die Rechenvorrichtung 600 kann Tiefenkameras, wie etwa stereoskopische Kamerasysteme, Infrarotkamerasysteme, RGB-Kamerasysteme, Berührbildschirm-Technologie und Kombinationen davon zur Gestenerfassung und -erkennung umfassen. Zusätzlich kann die Rechenvorrichtung 600 Beschleunigungsmesser oder Gyroskope (z.B. als Teil einer Trägheitsmesseinheit (IMU)) umfassen, die eine Bewegungserkennung ermöglichen. In einigen Beispielen kann die Ausgabe der Beschleunigungsmesser oder Gyroskope durch die Rechenvorrichtung 600 dazu verwendet werden, immersive Augmented Reality oder Virtual Reality wiederzugeben.
  • Die Leistungsversorgung 616 kann eine festverdrahtetes Leistungsversorgung, eine Batterie-Leistungsversorgung oder eine Kombination daraus umfassen. Die Leistungsversorgung 616 kann die Rechenvorrichtung 600 mit Leistung versorgen, um den Komponenten des Rechengeräts 600 einen Betrieb zu ermöglichen.
  • Die Darstellungskomponente(n) 618 kann/können eine Anzeige (z.B. einen Monitor, einen Berührbildschirm, einen Fernsehbildschirm, eine Köpfe-oben-Anzeige (HUD), andere Anzeigetypen oder eine Kombination davon), Lautsprecher und/oder andere Darstellungskomponenten umfassen. Die Darstellungskomponente(n) 618 kann/können Daten von anderen Komponenten (z.B. der/den GPU(s) 608, der/den CPU(s) 606 usw.) empfangen und die Daten ausgeben (z.B. als Bild, Video, Ton usw.).
  • Die Offenbarung kann in dem allgemeinen Kontext von Rechnercode oder maschinenverwendbaren Anweisungen, einschließlich rechnerausführbarer Befehle, wie etwa Programmmodule, beschrieben werden, die von einem Rechner oder einer anderen Maschine, wie etwa einem persönlichen Datenassistenten oder einer anderen tragbaren Vorrichtung, ausgeführt werden. Allgemein beziehen sich Programmmodule einschließlich Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw. auf Code, der bestimmte Aufgaben durchführt oder bestimmte abstrakte Datentypen umsetzt. Die Offenbarung kann in einer Vielzahl von Systemkonfigurationen ausgeführt werden, einschließlich tragbaren Vorrichtungen, Unterhaltungselektronik, Allzweckrechnern, spezielleren Rechenvorrichtungen usw. Die Offenbarung kann auch in verteilten Rechenumgebungen ausgeführt werden, in denen Aufgaben durch fernverarbeitenden Vorrichtungen ausgeführt werden, die über ein Kommunikationsnetz miteinander verbunden sind.
  • Wie hier verwendet sollte eine Erwähnung von „und/oder“ in Bezug auf zwei oder mehr Elemente so interpretiert werden, dass nur ein Element oder eine Kombination von Elementen gemeint ist. Zum Beispiel kann „Element A, Element B und/oder Element C“ nur Element A, nur Element B, nur Element C, Element A und Element B, Element A und Element C, Element B und Element C, oder die Elemente A, B und C umfassen. Darüber hinaus kann „mindestens eines aus Element A oder Element B“ mindestens eines aus Element A, mindestens eines aus Element B oder mindestens eines aus Element A und mindestens eines aus Element B umfassen. Ferner kann „mindestens eines aus Element A und Element B“ mindestens eines aus Element A, mindestens eines aus Element B oder mindestens eines aus Element A und mindestens eines aus Element B umfassen.
  • Der Gegenstand der vorliegenden Offenbarung wird hierin spezifisch beschrieben, um gesetzliche Anforderungen zu erfüllen. Allerdings ist die Beschreibung selbst nicht dazu gedacht, den Geltungsbereich dieser Offenbarung einzuschränken. Vielmehr haben die Erfinder in Betracht gezogen, dass der beanspruchte Gegenstand auch auf andere Weisen verkörpert sein könnte, um verschiedene Schritte oder Kombinationen von Schritten, die den in diesem Dokument beschriebenen ähnlich sind, in Verbindung mit anderen gegenwärtigen oder zukünftigen Technologien einzubeziehen. Obwohl die Begriffe „Schritt“ und/oder „Block“ in diesem Dokument verwendet sein können, um verschiedene Elemente der angewandten Methoden zu bezeichnen, sollten die Begriffe nicht so ausgelegt werden, dass sie eine bestimmte Reihenfolge unter oder zwischen den verschiedenen hier offenbarten Schritten implizieren, es sei denn, die Reihenfolge der einzelnen Schritte wird ausdrücklich beschrieben.
  • Klausel 15: Ein System umfasst: eine Recheneinrichtung mit einer oder mehreren Verarbeitungsvorrichtungen und einer oder mehreren Speichervorrichtungen, die mit der einen oder den mehreren Verarbeitungsvorrichtungen kommunikativ gekoppelt sind, die programmierte Anweisungen darauf speichern, welche bei Ausführung durch den Prozessor die Instanziierung veranlassen von: einem Bitstromgeber zum Empfangen erster Daten, die für einen Bitstrom stehen; einen Einzelbildselektor zum Feststellen, dass mindestens ein initialer Abschnitt eines Segments des aufzuzeichnenden Bitstroms ausschließlich Inter-Einzelbilder aufweist; einem Intra-Einzelbildkodierer zum Umsetzen mindestens eines initialen Inter-Einzelbilds des initialen Abschnitts in ein Intra-Einzelbild, wobei das Umsetzen mindestens teilweise auf Kodierungsparametern beruht, die mit den ersten Daten verknüpft sind; einem Einzelbildzuführer zum Zuführen des Intra-Einzelbilds anstelle des initialen Inter-Einzelbilds in das Segment des Bitstroms; und einer Dateisenke zum Speichern des Segments des Bitstroms.
  • Klausel 16: Das System nach Klausel 15, wobei die Kodierungsparameter aus mindestens einem Sequenzparametersatz (SPS) oder einem Bildparametersatz (PPS) bestimmt werden, die mit dem Bitstrom verknüpft sind.
  • Klausel 17: Das System nach Klausel 15, wobei die Kodierungsparameter einen Quantisierungsparameter (QP) umfassen, der dazu verwendet wird, einen ersten Quantisierungswert für das Intra-Einzelbild festzulegen, wobei der QP mindestens eine Stufe niedriger ist als ein zweiter Quantisierungswert, der mit dem initialen Inter-Einzelbild verknüpft ist.
  • Klausel 18: Das System nach Klausel 15, wobei die Einzelbild-Zuführ-Einheit ferner dazu eingerichtet ist, Kopfinformationen für mindestens ein Inter-Einzelbild in dem Segment nach dem Intra-Einzelbild zu aktualisieren, sodass das mindestens eine Inter-Einzelbild auf das Intra-Einzelbild verweist.
  • Klausel 19: Das System nach Klausel 15, ferner umfassend: einen Bitstrom-Medienparser zum Empfangen des Bitstroms, wobei der Bitstrom in einem komprimierten Format von einer entfernten Vorrichtung empfangen wird, wobei der Einzelbildselektor ferner zweite Daten erzeugt, die für eine Anforderung des initialen Inter-Einzelbilds in einem unkomprimierten Format stehen; und ferner wobei der Intra-Einzelbild-Kodierer dritte Daten empfängt, die für das initiale Inter-Einzelbild in dem unkomprimierten Format stehen, wobei die dritten Daten zumindest teilweise auf einem Videodekodierer beruhend erzeugt werden, der eine komprimierte Version des initialen Inter-Einzelbilds aus dem Bitstrom dekodiert.
  • Klausel 20: Das System nach Klausel 15, wobei der Bitstrom an dem Bitstrom-Medienparser in einem ersten Format der Motion Picture Experts Group (MPEG) empfangen wird und das Segment durch die Dateisenke in einem zweiten MPEG-Format gespeichert wird, das sich vom ersten MPEG-Format unterscheidet.

Claims (19)

  1. Verfahren, umfassend: Empfangen erster Daten, die für einen Bitstrom stehen, wobei der Bitstrom ein aufzuzeichnendes Bitstromsegment umfasst; Feststellen, dass zumindest ein initialer Abschnitt des Bitstromsegments ausschließlich Inter-Einzelbilder aufweist; Umsetzen zumindest eines initialen Inter-Einzelbilds des initialen Abschnitts in ein Intra-Einzelbild, wobei das Umsetzen zumindest teilweise auf Kodierungsparametern beruht, die mit den ersten Daten verknüpft sind; Zuführen des Intra-Einzelbilds in das Bitstromsegment anstelle des initialen Inter-Einzelbilds; und Speichern des Bitstromsegments.
  2. Verfahren nach Anspruch 1, wobei die Kodierungsparameter aus zumindest einem aus einem Sequenzparametersatz (SPS) oder einem Bildparametersatz (PPS) bestimmt werden, die mit dem Bitstrom verknüpft sind.
  3. Verfahren nach Anspruch 1 oder Anspruch 2, wobei die Kodierungsparameter einen Quantisierungsparameter QP umfassen, der dazu verwendet wird, einen ersten Quantisierungswert für das Intra-Einzelbild festzulegen, wobei der QP mindestens eine Stufe niedriger ist als ein zweiter Quantisierungswert, der mit dem initialen Inter-Einzelbild verknüpft ist.
  4. Verfahren nach einem der Ansprüche 1 bis 3, wobei das initiale Inter-Einzelbild ein vorhergesagtes (P)-Einzelbild oder ein bidirektionales (B)- Einzelbild ist und das Intra-Einzelbild ein intra-kodiertes (I)-Einzelbild oder ein Dekodierersofortauffrischungs-(IDR)-Einzelbild ist.
  5. Verfahren nach einem der Ansprüche 1 bis 4, ferner umfassend für zumindest ein Inter-Einzelbild in dem Bitstromsegment nach dem Intra-Einzelbild ein Aktualisieren von Kopfinformationen, sodass das zumindest eine Inter-Einzelbild auf das Intra-Einzelbild verweist.
  6. Verfahren nach einem der Ansprüche 1 bis 5, wobei das Bestimmen, dass zumindest der initiale Abschnitt des aufzuzeichnenden Bitstromsegments ausschließlich Inter-Einzelbilder aufweist, zumindest teilweise auf einem Empfangen zweiter Daten beruht, die für eine Anforderung zum Erfassen des Bitstromsegments stehen.
  7. Verfahren nach einem der Ansprüche 1 bis 6, wobei der Bitstrom in einem komprimierten Format von einer entfernten Vorrichtung empfangen wird, und das Verfahren ferner umfasst: Erzeugen zweiter Daten, die für eine Anforderung des initialen Intra-Einzelbilds in einem unkomprimierten Format stehen; und Empfangen dritter Daten, die für das initiale Inter-Einzelbild in dem unkomprimierten Format stehen, wobei die dritten Daten zumindest teilweise auf einem Dekodierer beruhen, der eine komprimierte Version des initialen Inter-Einzelbilds aus dem Bitstrom dekodiert.
  8. Verfahren nach einem der Ansprüche 1 bis 7, wobei der Bitstrom in einem ersten Format der Motion Picture Experts Group (MPEG) empfangen wird und das Bitstromsegment in einem zweiten MPEG-Format gespeichert wird, das sich von dem ersten MPEG-Format unterscheidet.
  9. Verfahren, umfassend: Empfangen erster Daten, die für eine Sequenz von Inter-Einzelbildern eines Bitstroms stehen; Auswählen, in einem Intervall, eines Inter-Einzelbilds aus der Sequenz von Inter-Einzelbildern; Umsetzen des Inter-Einzelbilds in ein Intra-Einzelbild, das zumindest teilweise auf Kodierungsparametern beruht, die mit den ersten Daten verknüpft sind; und Zuführen von zweiten Daten, die für das Intra-Einzelbild stehen, in die ersten Daten anstelle des Inter-Einzelbilds.
  10. Verfahren nach Anspruch 9, ferner umfassend ein Erfassen eines Segments des Bitstroms, wobei das Segment mit dem Intra-Einzelbild beginnt.
  11. Verfahren nach Anspruch 9 oder 10, wobei die Kodierungsparameter aus zumindest einem aus einem Sequenzparametersatz (Sequence Parameter Set, SPS) oder einem Bildparametersatz (Picture Parameter Set, PPS) bestimmt werden, die mit dem Bitstrom verknüpft sind.
  12. Verfahren nach einem der Ansprüche 9 bis 11, wobei der Bitstrom ein Livestream ist.
  13. Verfahren nach einem der Ansprüche 9 bis 12, wobei der Bitstrom ein Livestream einer Instanz eines Spiels ist, der von einer Nutzervorrichtung innerhalb einer Cloud-Spielumgebung empfangen wird, wobei der Bitstrom die Instanz des Spiels darstellt, wie sie von einem oder mehreren von der Nutzervorrichtung entfernten Servern wiedergegeben wird.
  14. Verfahren nach einem der Ansprüche 9 bis 13, wobei der Bitstrom in einem komprimierten Format von einer entfernten Vorrichtung empfangen wird, und das Verfahren ferner umfasst: Erzeugen dritter Daten, die für eine Anforderung des Inter-Einzelbilds stehen; und Empfangen vierter Daten, die für das Inter-Einzelbild in dem unkomprimierten Format stehen, wobei die vierten Daten zumindest teilweise auf einem Dekodierer beruhend erzeugt werden, der eine komprimierte Version des Inter-Einzelbilds dekodiert.
  15. System, umfassend: eine Rechenvorrichtung mit einer oder mehreren Verarbeitungsvorrichtungen und einer oder mehreren Speichervorrichtungen, die kommunikativ mit der einen oder den mehreren Verarbeitungsvorrichtungen gekoppelt sind, die programmierte Anweisungen darauf speichern, welche bei Ausführung durch den Prozessor die Instanziierung veranlassen von: einem Bitstromgeber zum Empfangen erster Daten, die für einen Bitstrom stehen; einem Einzelbildselektor zum Feststellen, dass zumindest ein initialer Abschnitt eines Segments des aufzuzeichnenden Bitstroms ausschließlich Inter-Einzelbilder aufweist; ein Intra-Einzelbild-Kodierer zum Umsetzen zumindest eines initialen Inter-Einzelbilds aus dem initialen Abschnitt in ein Intra-Einzelbild, wobei das Umsetzen zumindest teilweise auf Kodierungsparametern beruht, die mit den ersten Daten verknüpft sind; einen Einzelbildzuführer zum Zuführen des Intra-Einzelbilds in das Segment des Bitstroms anstelle des initialen Inter-Einzelbilds; und einer Dateisenke zum Speichern des Segments des Bitstroms.
  16. System nach Anspruch 15, wobei das System dazu eingerichtet ist, das Verfahren nach einem der Ansprüche 2 bis 8 auszuführen.
  17. System nach Anspruch 15 oder 16, wobei die Einzelbild-Zuführ-Einheit ferner dazu eingerichtet ist, Kopfinformationen für zumindest ein Inter-Einzelbild in dem Segment nach dem Intra-Einzelbild zu aktualisieren, sodass das zumindest eine Inter-Einzelbild auf das Intra-Einzelbild verweist.
  18. System nach einem der Ansprüche 15 bis 17, ferner umfassend: einen Bitstrom-Medienparser zum Empfangen des Bitstroms, wobei der Bitstrom in einem komprimierten Format von einer entfernten Vorrichtung empfangen wird, wobei der Einzelbildselektor ferner zweite Daten erzeugt, die für eine Anforderung des initialen Inter-Einzelbilds in einem unkomprimierten Format stehen; und ferner wobei der Intra-Einzelbild-Kodierer dritte Daten empfängt, die für das initiale Inter-Einzelbild in dem unkomprimierten Format stehen, wobei die dritten Daten zumindest teilweise auf einem Video-Dekodierer beruhend erzeugt werden, der eine komprimierte Version des initialen Inter-Einzelbilds aus dem Bitstrom dekodiert.
  19. System nach einem der Ansprüche 15 bis 18, wobei der Bitstrom an dem Bitstrom-Medienparser in einem ersten Format der Motion Picture Experts Group (MPEG) empfangen wird und das Segment durch die Dateisenke in einem zweiten MPEG-Format gespeichert wird, das sich von dem ersten MPEG-Format unterscheidet.
DE102020108357.2A 2019-06-11 2020-03-26 Umkodieren vorhergesagter bilder in live-videostream-anwendungen Pending DE102020108357A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962860212P 2019-06-11 2019-06-11
US62/860,212 2019-06-11
US16/690,669 US11265599B2 (en) 2019-06-11 2019-11-21 Re-encoding predicted picture frames in live video stream applications
US16/690,669 2019-11-21

Publications (1)

Publication Number Publication Date
DE102020108357A1 true DE102020108357A1 (de) 2020-12-17

Family

ID=73547318

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020108357.2A Pending DE102020108357A1 (de) 2019-06-11 2020-03-26 Umkodieren vorhergesagter bilder in live-videostream-anwendungen

Country Status (3)

Country Link
US (3) US11265599B2 (de)
CN (1) CN112073737A (de)
DE (1) DE102020108357A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210136378A1 (en) * 2020-12-14 2021-05-06 Intel Corporation Adaptive quality boosting for low latency video coding
US11949909B2 (en) * 2020-12-29 2024-04-02 Qualcomm Incorporated Global motion estimation using road and ground object labels for geometry-based point cloud compression
US20220212100A1 (en) * 2021-01-04 2022-07-07 Microsoft Technology Licensing, Llc Systems and methods for streaming interactive applications
CN112929667B (zh) * 2021-03-26 2023-04-28 咪咕文化科技有限公司 一种编解码方法、装置、设备及可读存储介质
US11997326B2 (en) 2021-11-30 2024-05-28 Samsung Electronics Co., Ltd. Method of streaming image content between server and electronic device, server for streaming image content, and electronic device for streaming image content
KR20230081402A (ko) * 2021-11-30 2023-06-07 삼성전자주식회사 서버와 전자 장치 사이의 영상 콘텐트를 스트리밍하는 방법, 영상 콘텐트를 스트리밍하는 서버 및 전자 장치
US11388445B1 (en) * 2022-03-10 2022-07-12 Yendo Hu Mosquito noise smoothing between different video subsections encoded with different compression methods within a video frame
US11425423B1 (en) * 2022-03-10 2022-08-23 Yendo Hu Memory storage for motion estimation and visual artifact redcution

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3976942B2 (ja) * 1998-12-18 2007-09-19 キヤノン株式会社 画像処理装置及び方法、画像処理プログラムが記録されたコンピュータ可読記録媒体
US8311095B2 (en) * 2002-07-17 2012-11-13 Onmobile Global Limited Method and apparatus for transcoding between hybrid video codec bitstreams
US8661496B2 (en) * 2002-12-10 2014-02-25 Ol2, Inc. System for combining a plurality of views of real-time streaming interactive video
KR100492567B1 (ko) * 2003-05-13 2005-06-03 엘지전자 주식회사 이동통신 시스템의 http 기반 비디오 스트리밍 장치및 방법
JP3753726B1 (ja) * 2004-10-13 2006-03-08 シャープ株式会社 動画像再符号化装置、動画像編集装置、プログラム、及び記録媒体
US7636395B2 (en) * 2005-03-14 2009-12-22 Nokia Corporation Method and device for splicing video data in compressed domain
CN1925596A (zh) * 2005-09-02 2007-03-07 上海乐金广电电子有限公司 个人用视频存储装置及其图像播放方法
CN101682776A (zh) * 2007-05-29 2010-03-24 日本电气株式会社 运动图像变换装置、运动图像变换方法及运动图像变换程序
US9369723B2 (en) * 2011-07-14 2016-06-14 Comcast Cable Communications, Llc Preserving image quality in temporally compressed video streams
US9813732B2 (en) * 2012-06-28 2017-11-07 Axis Ab System and method for encoding video content using virtual intra-frames
US9191725B2 (en) * 2013-03-15 2015-11-17 Arris Technology, Inc. Method and apparatus for streaming video
US9787986B2 (en) * 2014-06-30 2017-10-10 Intel Corporation Techniques for parallel video transcoding
US9560366B2 (en) * 2014-10-22 2017-01-31 Broadcom Corporation Video encoding for social media
US10218981B2 (en) * 2015-02-11 2019-02-26 Wowza Media Systems, LLC Clip generation based on multiple encodings of a media stream
US10951914B2 (en) * 2015-08-27 2021-03-16 Intel Corporation Reliable large group of pictures (GOP) file streaming to wireless displays
US10819951B2 (en) * 2016-11-30 2020-10-27 Microsoft Technology Licensing, Llc Recording video from a bitstream
CN107948646B (zh) * 2017-09-26 2019-02-05 北京字节跳动网络技术有限公司 一种视频摘要生成方法与视频再编码方法

Also Published As

Publication number Publication date
US11265599B2 (en) 2022-03-01
US11700419B2 (en) 2023-07-11
US20230300410A1 (en) 2023-09-21
US20220182715A1 (en) 2022-06-09
CN112073737A (zh) 2020-12-11
US20200396501A1 (en) 2020-12-17

Similar Documents

Publication Publication Date Title
DE102020108357A1 (de) Umkodieren vorhergesagter bilder in live-videostream-anwendungen
US9514783B2 (en) Video editing with connected high-resolution video camera and video cloud server
US11582497B2 (en) Methods, systems, processors and computer code for providing video clips
US6989868B2 (en) Method of converting format of encoded video data and apparatus therefor
US9800883B2 (en) Parallel video transcoding
DE102013221798B4 (de) Parallele Transcodierung
DE102013022256A1 (de) Verbesserung der Zuweisung eines Bitratensteuerungswerts für Video-Datenstromübertragung auf der Grundlage eines Aufmerksamkeitsbereichs eines Spielers
US10757463B2 (en) Information processing apparatus and information processing method
US10491937B2 (en) Information processing system
US20180007375A1 (en) Image encoding and decoding methods and devices thereof
DE112015002650B4 (de) Systeme und Verfahren zur prädiktiven Auslieferung von Inhalten mit hohen Bitraten zur Wiedergabe
DE112017005235T5 (de) Erhalten und signalisieren einer region oder eines viewports in streaming-medien
DE102013021710A1 (de) Grafik-Dienstleister und Verfahren zur Datenstromübertragung von bilderzeugtem Inhalt über eine entfernte Grafikverarbeitungsdienstleistung
DE102020111960A1 (de) Dynamische vergabe von rechenressourcen zur erzeugung von höhepunkten in cloudspiel-systemen
WO2019128668A1 (zh) 视频码流处理方法、装置、网络设备和可读存储介质
DE112013007509T5 (de) Verfahren, Einrichtung und System zum Auswählen von Audio-Video-Daten zum Streamen
DE10113880A1 (de) Verfahren zur Komprimierung und Dekomprimierung von Videodaten
DE112016002055T5 (de) Vorabrufcodierung für anwendungs-streaming
Ballard et al. Rats: adaptive 360-degree live streaming
US20140003798A1 (en) System and method for recording collaborative information
DE102012202315A1 (de) Videosystem zur Darstellung von Bilddaten, Verfahren und Computerprogramm
DE102020000306A1 (de) Generieren einer Sequenz von Texturen zur Videoversendung
Kammachi‐Sreedhar et al. Omnidirectional video delivery with decoder instance reduction
US12028564B2 (en) Methods, systems, processors and computer code for providing video clips
Lin et al. Content-adpative H. 264 rate control for live screencasting

Legal Events

Date Code Title Description
R012 Request for examination validly filed