Certain embodiments of the invention relate to video processing. More specifically, certain embodiments of the invention relate to a method and system for handling multiple 3-D video formats.
Support of three-dimensional (3-D) video presents many complexities that are not addressed in conventional two-dimensional (2D) video processing systems. The rapid growth of 3-D video systems has resulted in inconsistent and inadequate ways of dealing with these complexities.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with some aspects of the present invention as set forth in the remainder of the present application with reference to the drawings.
A system and/or method is provided for handling multiple 3-D video formats, substantially as illustrated by and/or described in connection with at least one of the figures, as set forth more completely in the claims.
These and other advantages, aspects and novel features of the present invention, as well as details of an illustrated embodiment thereof, will be more fully understood from the following description and drawings.
Various embodiments of the invention may be found in a method and system for handling multiple 3-D video formats. In various embodiments of the invention, a video processing system may receive one or more video frames comprising pixel data for a first 3-D view and pixel data for a second 3-D view, which may both be suitable for generating a three-dimensional (3-D) video frame. The pixel data for the first 3-D view via may be referred to as the first 3-D view pixel data and the pixel data for the second 3-D view via may be referred to as the second 3-D view pixel data. The video system may be operable to determine an arrangement of the first 3-D view pixel data and the second 3-D view pixel data in the one or more video frames. In instances that the determined arrangement is not a desired arrangement, the video processing system may be operable to convert the one or more video frames to the desired arrangement. Either one or both of the determined arrangement and the desired arrangement may comprise a series of two single-view frames, and each of the single-view frames may comprise one of the first 3-D view pixel data and the second 3-D view pixel data. Either or both of the determined arrangement and the desired arrangement may comprise a single frame comprising the first 3-D view pixel data and the second 3-D view pixel data. The single frame may be arranged such that a left portion of the single frame comprises the first 3-D view pixel data and a right portion of the single frame comprises the second 3-D view pixel data. The single frame may be arranged such that a top portion of the single frame comprises the first 3-D view pixel data and a bottom portion of the single frame comprises the second 3-D view pixel data. The single frame may be arranged such that the first 3-D view pixel data is interleaved with the second 3-D view pixel data.
The converting may comprise writing the first 3-D view pixel data to one or more locations in memory identified by a first one or more pointers and/or writing the second 3-D view pixel data to one or more locations in memory identified by a second one or more pointers. The converting may also comprise reading the first 3-D view pixel data and the second 3-D view pixel data from memory in an order that is different than an order in which the first 3-D view pixel data and the second 3-D view pixel data was written to memory. The video system may receive the first 3-D view pixel data and second 3-D view pixel data via a first switching element that is operable to convey pixel data onto one or more of a plurality of data paths, and via a second switching element that is operable to convey pixel data from the plurality of data paths to memory, to the first switching element, and to a compositor. Which one or more of the data paths the left-view pixel data and the right-view pixel data is conveyed onto may be based on the determined arrangement and the desired arrangement. As utilized herein a “3-D view” refers to one view (i.e., a left view or a right view) of a stereoscopic image, “3-D pixel data” refers to pixel data of one or both views of a stereoscopic image, and 3-D video refers to stereoscopic video.
Each of the memory 124, and the memory 126 may comprise RAM, ROM, NVRAM, flash, a hard drive, or any other suitable memory device. The memory 124, and memory 126 may be physically distinct memory elements of may be different portions and/or partitions of a single memory device.
The video input interface 106 may comprise suitable logic, circuitry, interfaces, and/or code that may be operable to receive a video stream and convey the pixel data of the video stream to the multiplexer 112a. The video input interface 106 may comprise, for example, a VGA interface, composite video interface, component video interface, HDMI interface, DisplayPort interface, and/or other suitable interface and the video stream into the interface 106 may be formatted accordingly. The received video stream may comprise monoscopic (2-D) video data and/or stereoscopic (3-D) video data. While this application focuses on processing of received 3-D video streams. Exemplary details of processing 2-D video streams are described in U.S. patent application Ser. No. ______ (Attorney Docket No. 23438US02) and in U.S. patent application Ser. No. ______ (Attorney Docket No. 23439US02) each of which is incorporated by reference above.
The video feeder 108 may comprise suitable logic, circuitry, interfaces, and/or code that may be operable to input pixel data corresponding to locally generated graphics to the multiplexer 112a. In this regard, the video feeder 108 may, for example, read pixel data out of the memory 126 and convey the pixel data to the multiplexer 112a.
The MPEG feeder 110 may comprise suitable logic, circuitry, interfaces, and/or code that may be operable to receive an MPEG stream and process the MPEG stream to output pixel data to the multiplexer 112a. In this regard, the MPEG stream may be received via a networking device (not shown).
Each of the multiplexers 112a and 112b may comprise suitable logic, circuitry, interfaces, and/or code that may be operable to route pixel data between any one or more inputs of the multiplexer to any one or more outputs of the multiplexer. Pixel data input to the multiplexer 112a from any one of more of the interface 106, feeder 108, and the feeder 110 may be conveyed to any one or more of the processing paths 1141-114J and/or any one or more of the bypass paths 1161-116K. Each of the processing paths 1141-114J may comprise suitable logic, circuitry, interfaces, and/or code that may be operable to perform one or more processing functions. Exemplary processing functions comprise scaling, subsampling, deinterlacing, blur/sharpen, color adjustment, and noise reduction. Each of the bypass paths 1161-116K may enable pixel data to be conveyed unchanged from the multiplexer 112a to the multiplexer 112b. Each of the loopback paths 1181-118L may enable pixel data to be conveyed from the multiplexer 112b to the multiplexer 112a. In this manner, the loopback paths may, for example, enable processing the same pixel data via multiple ones of the processing paths 1141-114J.
The capture module 120 may comprise suitable logic, circuitry, interfaces, and/or code that may be operable to write 3-D pixel data to the memory 126. The capture module 120 may be operable to write first 3-D view pixel data to the memory 126 utilizing a first one or more memory pointers. The capture module 120 may be operable to write second 3-D view pixel data to the memory 126 utilizing a second one or more memory pointers. First 3-D view pixel data may be left-view data, and second 3-D view pixel data may be right-view pixel data, or visa-versa. For example, left-view pixel data may be captured via a left lens of a video camera and right-view pixel data may be captured via a right lens of the video camera.
The compositor 122 may comprise suitable logic, circuitry, interfaces, and/or code that may be operable to generate an output video stream which may be output via, for example, a VGA output, composite video output, component video output, HDMI output, and/or DisplayPort output. The output video stream may comprise pixel data received from the multiplexer 112b and/or pixel data read from memory 124. In this regard, the compositor 122 may be operable to concurrently present pixel data from the memory 124 and pixel data from the multiplexer 112b. For example, graphics from the memory 124 may be overlaid on the pixel data from the multiplexer 112b. The output video stream may comprise monoscopic (2-D) video data and/or stereoscopic (3-D) video data. While this application focuses on outputting 3-D video streams. Exemplary details of processing 2-D video streams are described in U.S. patent application Ser. No. ______ (Attorney Docket No. 23438US02) and in U.S. patent application Ser. No. ______ (Attorney Docket No. 23439US02) each of which is incorporated by reference above.
In operation, one or more 3-D video frames may be input to the system 100 via one or more of the interface 106, the feeder 108, and the feeder 110. Each of the one or more input frames may comprise live-action images and/or computer-generated images. The input frame(s) may comprise left-view pixel data and right-view pixel data. The arrangement of the input frame(s) may correspond to any one of the arrangements described below with respect to
The multiplexer 112a may convey the received frame(s) to the multiplexer 112b via one or more of the processing paths 1141-114J and/or one or more of the bypass paths 1161-116K. In this regard, the frame(s) may make multiple passes from the multiplexer 112a to the multiplexer 112b and thus may traverse one or more of the loopback paths 1181-118L.
Upon arriving at the multiplexer 112b, after one or more traversals of one or more of the processing paths 1141-114J, bypass paths 1161-116K, and/or loopback paths 1181-118L, the frame(s) may be conveyed to the capture module 120. The capture module 120 may write the left-view pixel data and right-view pixel data to the memory 126. The left-view pixel data may be written to one or more memory locations identified by a first one or more pointers. The right-view pixel data may be written to one or more memory locations identified by a second one or more pointers.
Subsequently, the feeder module 108 may read the left-view and right-view pixel data from the memory 126 to generate one or more output frames. The first one or more pointers and the second one or more pointers may be utilized for reading the pixel data out from the memory 126. The order in which the pixel data is read from memory may depend on the arrangement of the input frame(s) and the desired arrangement of the output frame(s). In this regard, the arrangement of the output frame read from the memory 126 may correspond to any of the arrangements described below with respect to
The output frame(s) may be conveyed to the compositor 122. In some instances, prior to being conveyed to the compositor 122, the output frame(s) may be conveyed to the multiplexer 112a for one or more traversals of one or more of the processing paths 1141-114J, bypass paths 1161-116K, and/or loopback paths 1181-118L.
The compositor 122 may process the output frame(s) to make the output frame(s) suitable for insertion into a video stream. The video stream may be formatted so as to be compatible with one or more video standards such as VGA, composite video, component video, HDMI, and/or DisplayPort. Processing of the output frame(s) may comprise combining the output frame(s) from the multiplexer 112b with pixel data from memory 124. For example, graphics may be read from the memory 124 and overlaid on the output frame(s) from the multiplexer 112b.
In step 204, it is determined whether the input frame(s) are to traverse one or more of the processing paths 1141-114J or traverse one or more of the bypass paths 1161-116K. In instances that the input frame(s) are to traverse one or more of the processing paths 1141-114J, then in step 224, processing, such as scaling and/or deinterlacing, may occur.
In step 206, the input frame(s) are conveyed to the multiplexer 112b. In step 208 it is determined whether the input frame(s) are to be looped-back to multiplexer 112a for another traversal of one or more of the processing paths processing paths 1141-114J and/or one or more of the bypass paths 1161-116K. In instances that the input frame(s) are to be looped-back, the exemplary steps may return to step 202. In instances that the input frame(s) are not to be looped-back, the exemplary steps may advance to step 210.
In step 210, the input frame(s) are captured to the memory 126. The first 3-D pixel data of the input frame(s) may be stored to memory location(s) indicated by a first one or more memory pointers. The second 3-D view pixel data of the input frame(s) may be stored to memory location(s) indicated by a second one or more memory pointers.
In step 212, the left-view pixel data and right-view pixel data is read from the memory 126 to generate one or more output frame(s). The order in which the data is read from the memory 126 may depend on the desired arrangement of the output frame(s).
In step 214, it is determined whether the output frame(s) are be processed by one or more of the processing paths 1141-114J. In instances that the output frame(s) are to be processed, then the exemplary steps may advance to step 226.
In step 226, the output frame(s) are communicated to the multiplexer 112a. In step 228, the output frame(s) are conveyed onto one or more of the processing paths 1141-114J for processing, such as scaling and/or noise reduction. In step 230, the output frame(s) may arrive at the multiplexer 112b. In step 232 it may be determined whether the output frame(s) are to be looped-back to multiplexer 112a for another traversal of one or more of the processing paths processing paths 1141-114J and/or one or more of the bypass paths 1161-116K. In instances that the output frame(s) are to be looped-back, the exemplary steps may return to step 226. In instances that the output frame(s) are not to be looped-back, the exemplary steps may advance to step 216.
In step 216, the output frame(s) arrive at the multiplexer 112b. In step 218 the output frame(s) are conveyed to the compositor 122. In step 220, the compositor may process the output frame(s) to make them suitable for insertion into a video stream. Processing the output frame(s) may comprise combining the output frame(s) from the multiplexer 112b with pixel data from memory 124. For example, graphics may be read from the memory 124 and overlaid on the output frame(s) from the multiplexer 112b.
In step 222, the video stream may be communicated to another video device, such as a television or monitor. The video stream may, for example, be formatted in accordance with one or more video standards such as VGA, composite video, component video, HDMI, and/or DisplayPort.
The two-frame-sequential arrangement 302 comprises a first frame comprising first 3-D view pixel data and a second frame comprising second 3-D view pixel data. The two frames may be received by the system 100 sequentially. That is, the first frame may be received earlier in time before the second frame.
The left portion of the left-right-single-frame arrangement 304 may comprise first 3-D view pixel data and the right portion of the left-right single-frame arrangement 304 may comprise second 3-D view pixel data. An exemplary 4M×4N left-right-single-frame arrangement is described in table 1 below.
The top portion of the over-under-single-frame arrangement 306 may comprise first 3-D view pixel data and the bottom portion of the over-under-single-frame arrangement 306 may comprise second 3-D view pixel data. An exemplary 4M×4N over-under-single-frame arrangement is described in table 2 below.
The vertically-interleaved-single-frame arrangement 308 may alternate between one or more lines of left-view pixel data and one or more lines of right-view pixel data. An exemplary 4M×4N vertically-interleaved-single-frame arrangement is described in table 3 below.
The horizontally-interleaved-single-frame arrangement 310 may alternate between one or more columns of left-view pixel data and one or more columns of right-view pixel data. An exemplary 4M×4N horizontally-interleaved-single-frame arrangement is described in table 4 below.
In the vertically-and-horizontally-interleaved-single-frame arrangement 312, the first 3-D view and second 3-D view pixel data may be interleaved in both a vertical and horizontal direction. An exemplary 4M×4N horizontally-interleaved-single-frame arrangement is described in table 4 below.
Various aspects of the invention may be found in a method and system for handling multiple 3-D video formats. In an exemplary embodiment of the invention, a video processing system 100 may receive one or more video frames, such one or more of the frames 402, 406, 408a and 408b, comprising first 3-D view pixel data and second 3-D view pixel data suitable for generating a three-dimensional (3-D) video frame. The video system 100 may be operable to determine an arrangement of the first 3-D view pixel data and the second view pixel data in the one or more video frames, where the arrangement corresponds to one of the arrangements 302-312. In instances that the determined arrangement is not a desired arrangement, the video processing system 100 may be operable to convert the one or more video frames to the desired arrangement. Either or both of the determined arrangement and the desired arrangement may be the arrangement 302 and may comprise a series of two single-view frames, each of the single-view frames comprising one of the first 3-D view pixel data and the second 3-D view pixel data.
Either or both of the determined arrangement and the desired arrangement may be one of the arrangements 304-312 and comprise a single frame comprising the first 3-D view pixel data and the second 3-D view pixel data. The single frame may be arranged as arrangement 304 and a left portion of the single frame may comprise the first 3-D view pixel data and a right portion of the single frame may comprise the second 3-D view pixel data. The single frame may be arranged as arrangement 306 and a top portion of the single frame may comprise the first 3-D view pixel data and a bottom portion of the single frame may comprise the second 3-D view pixel data. The single frame may be arranged as one of arrangements 308, 310, and 312 and may comprise the first 3-D view pixel data interleaved with the second 3-D view pixel data.
The converting may comprise writing the first 3-D view pixel data to one or more locations 150a in the memory 126 identified by a first one or more pointers. The converting may comprise writing the second 3-D view pixel data to one or more locations 150b in the memory 126 identified by a second one or more pointers. The converting may comprise reading the first 3-D view pixel data and the second 3-D view pixel data from memory in an order that is different than an order in which the first 3-D view pixel data and the second 3-D view pixel data was written to memory. The video processing system 100 may receive the first 3-D view pixel data and second 3-D view pixel data via a first switching element 112a that is operable to convey pixel data onto one or more of a plurality of data paths 1141-114J and/or 1161-116K, and via a second switching element 112b that is operable to convey pixel data from the plurality of data paths 1141-114J and/or 1161-116K to the memory 126 (via capture module 120), to the first switching element 112a, and to the compositor 122. Which one or more of the data paths 1141-114J, 1161-116K and/or 1181-118L and/or the left-view pixel data and the right-view pixel data is conveyed onto may be based on the determined arrangement and the desired arrangement.
Other embodiments of the invention may provide a non-transitory computer readable medium and/or storage medium, and/or a non-transitory machine readable medium and/or storage medium, having stored thereon, a machine code and/or a computer program having at least one code section executable by a machine and/or a computer, thereby causing the machine and/or computer to perform the steps as described herein for handling multiple 3-D video formats.
Accordingly, the present invention may be realized in hardware, software, or a combination of hardware and software. The present invention may be realized in a centralized fashion in at least one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system or other apparatus adapted for carrying out the methods described herein is suited. A typical combination of hardware and software may be a general-purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
The present invention may also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods. Computer program in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form.
While the present invention has been described with reference to certain embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted without departing from the scope of the present invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the present invention without departing from its scope. Therefore, it is intended that the present invention not be limited to the particular embodiment disclosed, but that the present invention will include all embodiments falling within the scope of the appended claims.
This patent application makes reference to, claims priority to and claims benefit from: U.S. Provisional Patent Application Ser. No. 61/296,851 (Attorney Docket No. 22866US01) filed on Jan. 20, 2010; U.S. Provisional Patent Application Ser. No. 61/267,729 (Attorney Docket No. 20428US01) filed on Dec. 8, 2009; and U.S. Provisional Patent Application Ser. No. 61/330,456 (Attorney Docket No. 23028US01) filed on May 3, 2010. Each of the above stated applications is hereby incorporated herein by reference in its entirety. This patent application also makes reference to: U.S. Provisional patent application Ser. No. ______ (Attorney Docket No. 23437US02) filed on Dec. 8, 2010; U.S. Provisional patent application Ser. No. ______ (Attorney Docket No. 23438US02) filed on Dec. 8, 2010; U.S. Provisional patent application Ser. No. ______ (Attorney Docket No. 23439US02) filed on Dec. 8, 2010; and U.S. Provisional patent application Ser. No. ______ (Attorney Docket No. 23440US02) filed on Dec. 8, 2010. Each of the above stated applications is hereby incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61296851 | Jan 2010 | US | |
61267729 | Dec 2009 | US | |
61330456 | May 2010 | US |