1460932637-d647d8c1-e55d-4386-a93d-fdb972b97437

1. An apparatus comprising:
an interface to receive a plurality of video data streams, a dimensionality of each video stream being either two-dimensional (2D) or three-dimensional (3D); and
a processing module to process a first video data stream of the plurality of video streams as a main video image and a second video data stream of the plurality of data streams as a video sub-image, the processing module including a video combiner to combine the main video data stream and the sub-video data stream to generate a combined video output;
wherein the processing module is configured to modify a dimensionality of the video sub-image to match a dimensionality of the main video image.
2. The apparatus of claim 1, wherein the processing module is further configured to downsize the second video stream to fit the second video stream into a region for the video sub-stream.
3. The apparatus of claim 2, wherein downsizing the second video stream comprises downsampling, downscaling, or cropping the video stream.
4. The apparatus of claim 1, wherein the conversion of the second video stream includes adjusting an apparent depth for a viewer between the video sub-image and a display frame.
5. The apparatus of claim 4, wherein the second video stream includes an on-screen display (OSD), and wherein conversion of the second video stream includes adjusting an apparent depth for the viewer between the OSD and the video frame.
6. The apparatus of claim 1, further comprising a display screen to display one or more images, wherein the one or more images may include the main video image and the video sub-image, wherein the video sub-image is smaller than the main video image and obscures a portion of the main video image.
7. The apparatus of claim 1, wherein the video combiner includes a multiplexer to multiplex the sub-video data stream with the main video data stream to generate output pixel data.
8. The apparatus of claim 7, wherein the video combiner includes a module to extract synchronization signals from the first video data stream.
9. The apparatus of claim 8, wherein the video combiner includes a module to receive the output pixel data and the extracted synchronization signals to generate the combined video output.
10. The apparatus of claim 7, wherein the video combiner includes one or more coordinate processors to determine which pixels of the sub-video data stream and the main video data stream are to be included in the output pixel data.
11. A method comprising:
receiving a plurality of video data streams, a dimensionality of each of the plurality of video data streams being either two-dimensional (2D) or three-dimensional (3D);
selecting a first video data stream of the plurality of video data streams as a main video channel;
selecting a second video data stream of the plurality of data streams as a sub-video channel;
converting the dimensionality of the second data stream to match the dimensionality of the first data stream; and
generating a combined video output, the video output including a main video image generated from the main video channel and a video sub-image generated from the sub-video channel.
12. The method of claim 11, wherein generating the video output includes multiplexing the first video data stream with the second video data stream.
13. The method of claim 11, further comprising downsizing frames of the second video data stream such that the sub-video image fits a certain inset window for display.
14. The method of claim 11, wherein the main video channel is a 3D video channel and the sub-video channel is a 2D channel, and wherein converting the dimensionality of the second data stream includes copying each frame of data of the sub-video channel into a left channel region and a right channel region.
15. The method of claim 11, wherein the main video channel is a 3D video channel, and further comprising adjusting an apparent depth of the sub-video channel by modifying a difference between a position of a sub-video channel left region and a position of a sub-video channel right region.
16. The method of claim 15, wherein the sub-video channel includes an on-screen display (OSD), and wherein adjusting the apparent depth of the sub-video channel comprises modifying a difference between a position of an OSD left region and a position of an OSD right region.
17. The method of claim 11, wherein the main video channel is a 2D video channel and the sub-video channel is a 3D channel, and wherein converting the dimensionality of the second data stream includes eliminating either a left region or a right region of a data frame and using the remaining left or right region as the data frame of 2D data frames for the sub-video channel.
18. The method of claim 11, wherein generating the combined video output includes extracting synchronization signals from the main video channel.
19. A video combiner comprising:
a multiplexer to multiplex a main video data stream with one or more sub-video data streams to generate combined pixel data, wherein the data streams may be either three-dimensional (3D) or two-dimensional (2D);
a synchronization extractor to extract synchronization signals from the main video data stream;
a first coordinate processor to identify pixels to be included in the combined pixel data based on the extracted synchronization signals, the first coordinate processor to operate for 2D and a first region of 3D main video streams; and
a 3D video module including a second coordinate processor to identify pixels to be included in the combined pixel data based on the extracted synchronization signals, the second coordinate processor to operate for a second region of 3D main video streams.
20. The video combiner of claim 19, wherein the second coordinate processor is shared with the first coordinate processor.
21. The video combiner of claim 19, wherein the 3D video module further includes a vertical synchronization inserter, the vertical synchronization inserter to insert an additional vertical synchronization signal into an active space region in a 3D format of the main video data stream.
22. The video combiner of claim 19, wherein the second coordinate processor operates without knowledge of the 3D format of the main video data stream.
23. The video combiner of claim 19, further comprising a module to receive the combined pixel data and the extracted synchronization signals to generate a combined video output.
24. A computer readable storage medium having stored thereon data representing sequences of instructions that, when executed by a processor, cause the processor to perform operations comprising:
receiving a plurality of video data streams, a dimensionality of each of the plurality of video data streams being either two-dimensional (2D) or three-dimensional (3D);
selecting a first video data stream of the plurality of video data streams as a main video channel;
selecting a second video data stream of the plurality of data streams as a sub-video channel;
converting the dimensionality of the second data stream to match the dimensionality of the first data stream; and
generating a combined video output, the video output including a main video image generated from the main video channel and a video sub-image generated from the sub-video channel.
25. The medium of claim 24, wherein generating the video output includes multiplexing the first video data stream with the second video data stream.
26. The medium of claim 24, further comprising instructions that, when executed by a processor, cause the processor to perform operations comprising:
downsizing frames of the second video data stream such that the sub-video image fits a certain inset window for display.
27. The medium of claim 24, wherein the main video channel is a 3D video channel and the sub-video channel is a 2D channel, and wherein converting the dimensionality of the second data stream includes copying each frame of data of the sub-video channel into a left channel region and a right channel region.
28. The medium of claim 22, wherein the main video channel is a 3D video channel, and further comprising instructions that, when executed by a processor, cause the processor to perform operations comprising:
adjusting an apparent depth of the sub-video channel by modifying a difference in between a position of a sub-video channel left region and a position of a sub-video channel right region.
29. The medium of claim 28, wherein the sub-video channel includes an on-screen display (OSD), and wherein adjusting the apparent depth of the sub-video channel comprises modifying a difference between a position of an OSD left region and a position of an OSD right region.
30. The medium of claim 24, wherein the main video channel is a 2D video channel and the sub-video channel is a 3D channel, and wherein converting the dimensionality of the second data stream includes eliminating either a left region or a right region of a data frame and using the remaining left or right region as the data frame of 2D data frames for the sub-video channel.
31. The medium of claim 24, wherein generating the combined video output includes extracting synchronization signals from the main video channel.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1. A computer implemented method for optimizing the performance of one or more software components, the method comprising:
identifying at least two constituent software components for parallel execution, wherein the software components comprise a software application, workflow, process, or a software component implementing at least one discrete functionality;
executing the identified software components;
profiling the performance of the one or more software components at an execution time, wherein profiling comprises gathering a set of data related to one or more performance characteristics of the one or more software components at runtime;
creating an optimization model with the set of data gathered from profiling the execution of the one or more software components, wherein criteria involved in the design of the optimization model comprises a resource requirement for executing a software component or a cost-benefit evaluation associated with an overhead involved in the execution of a software component in parallel with other identified software components; and
marking at least two software components for execution in parallel in a subsequent execution on the basis of the optimization model.
2. The computer implemented method as claimed in claim 1, wherein identifying is performed at a design time by a developer.
3. The computer implemented method as claimed in claim 1, wherein identifying is performed by the compiler at a compile time.
4. The computer implemented method as claimed in claim 1, wherein identifying is performed at an execution runtime based on a predefined algorithm.
5. The computer implemented method as claimed in claim 4, wherein the runtime comprises an operating system, a virtual machine, or an application server which controls the execution of the software components.
6. The computer implemented method as claimed in claim 1, wherein identifying comprises marking, by a user, at least two software components for parallel execution.
7. The computer implemented method as claimed in claim 1, wherein identifying comprises marking, by a computer, at least two software components for parallel execution.
8. The computer implemented method as claimed in claim 1, wherein the set of data gathered by profiling comprises a processor utilization metric, a memory usage metric, a disk usage metric, a network usage metric or a computational resource overhead involved in running components parallelly.
9. The computer implemented method as claimed in claim 1, further comprising profiling the performance and resource requirement of the one or more software components in each execution thereof
10. The computer implemented method as claimed in claim 9, further comprising refining the optimization model following each iteration on the basis of the set of data gathered by profiling the performance of the one or more software components.
11. The computer implemented method as claimed in claim 10, wherein the overhead associated with the execution of each of the one or more software components is determinative of the optimization model.
12. The computer implemented method as claimed in claim 10, wherein the one or more marked software components are marked for sequential execution if a resource associated with the execution of at least two of the marked software components in parallel exceeds available runtime resources.
13. The computer implemented method as claimed in claim 10, wherein one or more marked software components are marked for sequential execution if throughput of the system for execution of the one or more software components is negatively affected by the execution of at least two of the one or more software components in parallel.
14. A system for optimizing the performance of one or more software components, the system comprising:
one or more processing units; and
a processor readable memory, the memory containing one or more programming instructions to:
identify at least two constituent software components for parallel execution, wherein the software components comprise a software application, a workflow, a process, or a software component implementing one or more discrete functionality;
execute the identified software components;
profile the performance of the one or more software components at an execution time, wherein profiling comprises gathering a set of data related to one or more performance characteristics of the one or more software components at runtime;
create an optimization model with the set of data gathered from profiling the execution of the one or more software components; and
mark at least two software components for execution in parallel in a subsequent execution on the basis of the optimization model.
15. The system as claimed in claim 14, wherein identifying is performed at a design time by a developer.
16. The system as claimed in claim 14, wherein identifying is performed by the compiler at a constuction time.
17. The system as claimed in claim 14, wherein identifying is performed at an execution runtime based on a predefined algorithm.
18. The system as claimed in claim 17, wherein the runtime environment comprises an operating system, a virtual machine, or an application server which controls the execution of the software components.
19. The system as claimed in claim 14, wherein identifying comprises marking, by a user, at least two software components for parallel execution.
20. The system as claimed in claim 14, wherein identifying comprises marking, by a system, at least two software components for parallel execution.
21. The system as claimed in claim 14, wherein the set of data gathered by profiling comprises a processor utilization metric, a memory usage metric, a disk usage metric, a network usage metric or a computational resource overhead involved in running the software components in parallel.
22. The system as claimed in claim 14, wherein the one or more software components are executed sequentially.
23. The system as claimed in claim 22, further comprising profiling the performance and resource requirement of the one or more software components in each execution thereof.
24. The system as claimed in claim 23, further comprising refining the optimization model following each iteration on the basis of the set of data gathered by profiling the performance of the one or more software components.
25. The system as claimed in claim 24, wherein the resource overhead associated with the execution of each of the one or more software components is determinative of the optimization model.
26. The system as claimed in claim 23, wherein the one or more marked software components are marked for sequential execution if a resource overhead associated with the execution of at least two of the marked software components in parallel exceeds available runtime resources.
27. The system as claimed in claim 23, wherein one or more marked software components are marked for sequential execution if throughput of the system for execution of the one or more software components is negatively affected by the execution of at least two of the one or more software components in parallel.
28. A non-transitory computer readable storage medium having stored thereon computer executable instructions for performing a method of optimizing the performance of one or more software components at runtime, the method comprising:
identifying at least two constituent software components for parallel execution, wherein the software components comprise a software application, a workflow, a process, or a software component implementing at least one discrete functionality;
executing the identified software components;
profiling the performance of the one or more software components at an execution time, wherein profiling comprises gathering a set of data related to one or more performance characteristics of the one or more software components at runtime, and wherein the set of data gathered by profiling comprises a processor utilization metric, a memory usage metric, a disk usage metric or a computational resource overhead involved in running components parallelly;
creating an optimization model with the set of data gathered from profiling the execution of the one or more software components, wherein criteria involved in the design of the optimization model comprise resource availability or a cost-benefit evaluation associated with an overhead involved in the execution of a component in parallel with other identified components; and
marking at least two software components for execution in parallel in a subsequent execution on the basis of the optimization model.