Processor implemented systems and methods for optimized video decoding using adaptive thread priority adjustment
AssigneeMarvell International Ltd.
InventorXueming Zhao
Life of this patent
Estimating the term…
Abstract
Systems and methods are provided for operating a decoder to decode a video frame in a multi-threaded environment. A first buffer ring state is detected based on a status of a first buffer ring, and a second buffer ring state is detected based upon a status of a second buffer ring. An adjustment of priorities of a parser thread, a decoder thread, and a renderer thread is requested based on the first buffer ring state and the second buffer ring state. The first buffer ring is interacted with to receive stream data from the parser, the stream data is decoded to generate frame data, and the second buffer ring is interacted with to provide the frame data to the renderer for display.
Claims18
A computer-implemented method of operating a decoder to decode a video frame in a multi-threaded environment where a parser thread is associated with a parser, a decoder thread is associated with the decoder, and a renderer thread is associated with a renderer, and where the parser thread communicates with the decoder thread using a first buffer ring and the decoder thread communicates with the renderer thread using a second buffer ring, wherein the first buffer ring includes a first free buffer queue and a first busy buffer queue, and wherein the second buffer ring includes a second free buffer queue and a second busy buffer queue, the method comprising:
- detecting a first buffer ring state defining which queue of the first free buffer queue and the first busy buffer queue has more buffers;
- detecting a second buffer ring state defining which queue of the second free buffer queue and the second busy buffer queue has more buffers;
- determining, based on the first buffer ring state and the second buffer ring state, an order of priority for the parser thread, the decoder thread, and the renderer thread;
- interacting with the first buffer ring to receive stream data from the parser;
- decoding the stream data to generate frame data;
- and
- interacting with the second buffer ring to provide the frame data to the renderer for display.
One or more computer-readable storage mediums encoded with instructions for commanding one or more data processors to execute a method for operating a decoder to decode a video frame in a multi-threaded environment where a parser thread is associated with a parser, a decoder thread is associated with the decoder, and a renderer thread is associated with a renderer, and where the parser thread communicates with the decoder thread using a first buffer ring and the decoder thread communicates with the renderer thread using a second buffer ring, wherein the first buffer ring includes a first free buffer queue and a first busy buffer queue, and wherein the second buffer ring includes a second free buffer queue and a second busy buffer queue, the method comprising:
- detecting a first buffer ring state defining which queue of the first free buffer queue and the first busy buffer queue has more buffers;
- detecting a second buffer ring state defining which queue of the second free buffer queue and the second busy buffer queue has more buffers;
- determining, based on the first buffer ring state and the second buffer ring state, an order of priority for the parser thread, the decoder thread, and the renderer thread;
- interacting with the first buffer ring to receive stream data from the parser;
- decoding the stream data to generate frame data;
- and
- interacting with the second buffer ring to provide the frame data to the renderer for display.
A computer-implemented system for operating a decoder to decode a video frame in a multi-threaded environment where a parser thread is associated with a parser, a decoder thread is associated with the decoder, and a renderer thread is associated with a renderer, and where the parser thread communicates with the decoder thread using a first buffer ring and the decoder thread communicates with the renderer thread using a second buffer ring, wherein the first buffer ring includes a first free buffer queue and a first busy buffer queue, and wherein the second buffer ring includes a second free buffer queue and a second busy buffer queue, the system comprising:
- one or more data processors;
- one or more computer-readable storage mediums containing instructions for commanding the one or more data processors to execute a method that includes:
- detecting a first buffer ring state defining which queue of the first free buffer queue and the first busy buffer queue has more buffers;
- detecting a second buffer ring state defining which queue of the second free buffer queue and the second busy buffer queue has more buffers;
- determining, based on the first buffer ring state and the second buffer ring state, an order of priority for the parser thread, the decoder thread, and the renderer thread;
- interacting with the first buffer ring to receive stream data from the parser;
- decoding the stream data to generate frame data;
- and
- interacting with the second buffer ring to provide the frame data to the renderer for display.
Dependencies are inferred from the claim text.