Abstract:
A host has a graphics pipeline that process frames by portions (e.g., pixels or rows) or slices. A remote device transmits a video stream container via a network to the host. A frame of the video stream in the container has encoded portions. The graphics pipeline includes a demultiplexer that extracts the portions of the video frame. When a portion has been extracted it is passed to a decoder, which is next in the pipeline. The decoder may begin decoding the portion before receiving a next portion of the frame, possibly while the demultiplexer is demultiplexing the next portion of the frame. A decoded portion of the frame is passed to a renderer which accumulates the portions of the frame and renders the frame. At any time portions of a frame might concurrently be being received, demultiplexed, decoded, and rendered. The decoder may be single-threaded, multi-threaded, or hardware accelerated.
Abstract:
In a video processing system including a video decoder, to handle frequent changes in the bit rate of an encoded bitstream, a video decoder can be configured to process a change in bit rates without reinitializing. The video decoder can be configured to reduce memory utilization. The video decoder can be configured both to process a change in bit rate without reinitializing while reducing memory utilization. In one implementation, the video processing system can include an interface between an application running on a host processor and the video decoder which allows the video decoder to communicate with the host application about the configuration of the video decoder.
Abstract:
In a video processing system including a video decoder, to handle frequent changes in the bit rate of an encoded bitstream, a video decoder can be configured to process a change in bit rates without reinitializing. The video decoder can be configured to reduce memory utilization. The video decoder can be configured both to process a change in bit rate without reinitializing while reducing memory utilization. In one implementation, the video processing system can include an interface between an application running on a host processor and the video decoder which allows the video decoder to communicate with the host application about the configuration of the video decoder.
Abstract:
Technologies for a single-pass/single copy network abstraction layer unit (“NALU”) parser. Such a NALU parser typically reuses source and/or destination buffers, optionally changes endianess of NALU data, optionally processes emulation prevention codes, and optionally processes parameters in slice NALUs, all as part of a single pass/single copy process. The disclosed NALU parser technologies are further suitable for hardware implementation, software implementation, or any combination of the two.
Abstract:
In a computer with a graphics processing unit as a coprocessor of a central processing unit, the graphics processing unit is programmed to perform waves of parallel operations to decode intra-prediction blocks of an image encoded in a certain video coding format. To decode the intra-prediction blocks of an image using the graphics processing unit, the intra-predicted blocks and their reference blocks are identified. The computer identifies whether pixel data from the reference blocks for these intra-predicted blocks are available. Blocks for which pixel data from reference blocks are available are processed in waves of parallel operations on the graphics processing unit as the pixel data becomes available. The process repeats until all intra-predicted blocks are processed. The identification of blocks to process in each wave can be determined by the graphics processing unit or the central processing unit.
Abstract:
A video encoding system balances memory usage to store interpolated image data with processing resource usage to interpolate image data without encoding quality degradation or with better encoding quality. This balance can be achieved by identifying and interpolating subregions of a reference image. Each subregion is less than the whole reference image, but larger than a search region for any single block of an image for which motion vectors are to be computed. Each interpolated subregion of the reference image is used to compute motion vectors for multiple blocks of an image being encoded. A video encoding system can identify portions of an image being encoded for which sub-pixel resolution motion vectors are not computed. Motion vectors for such portions of the image can be computed using a reference image without interpolation.
Abstract:
Innovations in how a host application and video encoder share information and use shared information during video encoding are described. The innovations can help the video encoder perform certain encoding operations and/or help the host application control overall encoding quality and performance. For example, the host application provides regional motion information to the video encoder, which the video encoder can use to speed up motion estimation operations for units of a current picture and more generally improve the accuracy and quality of motion estimation. Or, as another example, the video encoder provides information about the results of encoding the current picture to the host application, which the host application can use to determine when to start a new group of pictures at a scene change boundary. By sharing information in this way, the host application and the video encoder can improve encoding performance, especially for real-time communication scenarios.
Abstract:
Techniques are described for remuxing multimedia content received in a digital video broadcasting format without performing transcoding of the video and/or audio content. For example, a computing device with a digital television tuner can receive multimedia content in a digital video broadcast format. The computing device can remux the received multimedia content from the digital video broadcasting format in which the multimedia content is received into a target streaming protocol for streaming to other devices. Remuxing operations can comprise demultiplexing the received multimedia content to separate the audio and video content, performing meta-data reconstruction, and multiplexing the audio and video content into a target stream using a target streaming protocol format.
Abstract:
Techniques and tools described herein help manage memory efficiently during video decoding, especially when multiple video clips are concurrently decoded. For example, with clip-adaptive memory usage, a decoder determines first memory usage settings expected to be sufficient for decoding of a video clip. The decoder also determines second memory usage settings known to be sufficient for decoding of the clip. During decoding, memory usage is initially set according to the first settings. Memory usage is adaptively increased during decoding, subject to theoretical limits in the second settings. With adaptive early release of side information, the decoder can release side information memory for a picture earlier than the decoder releases image plane memory for the picture. The decoder can also adapt memory usage for decoded transform coefficients depending on whether the coefficients are for intra-coded blocks or inter-coded blocks, and also exploit the relative sparseness of non-zero coefficient values.
Abstract:
A media processing tool adds custom data to an elementary media bitstream or media container. The custom data indicates nominal range of samples of media content, but the meaning of the custom data is not defined in the codec format or media container format. For example, the custom data indicates the nominal range is full range or limited range. For playback, a media processing tool parses the custom data and determines an indication of media content type. A rendering engine performs color conversion operations whose logic changes based at least in part on the media content type. In this way, a codec format or media container format can in effect be extended to support full nominal range media content as well as limited nominal range media content, and hence preserve full or correct color fidelity, while maintaining backward compatibility and conformance with the codec format or media container format.