INTEROPERABLE 3D IMAGE CONTENT HANDLING
20220124301 · 2022-04-21
Inventors
- Danny BERENDSE (Eindhoven, NL)
- Mark Josephus Gerardus DE GROOT (Eindhoven, NL)
- Patric CASTRO THEUNE (Eindhoven, NL)
- Francisco Javier HEREDIA SORIANO (Eindhoven, NL)
Cpc classification
H04N13/111
ELECTRICITY
H04N13/282
ELECTRICITY
H04N13/275
ELECTRICITY
International classification
H04N13/275
ELECTRICITY
Abstract
A system and computer-implemented method (s) are described which provide a backward-compatible way of outputting 3D image content by an application. Namely, the application may output the 3D image content as a primary view comprising 2D image data and a secondary view comprising 3D-enabling auxiliary data. The application may mutually arrange both views such that a ‘legacy’ 2D display server component for a 2D display omits drawing, or overdraws, the secondary view when compositing the at least two views into a display signal, while a 3D display server component may access the 3D-enabling auxiliary data in the secondary view and process the 2D image data and the 3D-enabling auxiliary data appropriately.
Claims
1. A system for displaying views of an application on a display, wherein the views represent 3D image content for a 3D display, the system comprising: a memory comprising system data representing an operating system and application data representing the application; a processor subsystem configured to communicate with the memory and to execute the operating system and the application; wherein the operating system is configured to provide: a window manager for managing visibility of views generated by applications; one or more display server components, the one or more display server components being specific to a type of display and configured to, based on visibility information obtained from the window manager, composite the views into a display signal for display; wherein the application is configured to provide the 3D image content to the window manager in the form of at least two views which are arranged with respect to each other in accordance with a view configuration, wherein the at least two views comprise a primary view comprising 2D image data and a secondary view comprising 3D-enabling auxiliary data which is indicative of depth of the 2D image data, wherein the application is configured to: i) stack the primary view in front of the secondary view to provide a view configuration in which the primary view occludes the secondary view, or ii) provide the primary view to the window manager by indicating a viewport which comprises the 2D image data of the primary view and provide the secondary view to the window manager by arranging the 3D-enabling auxiliary data of the secondary view outside of the viewport, to cause a 2D display server component for a 2D display to omit drawing, or overdraw, the secondary view when compositing the at least two views into the display signal.
2. The system according to claim 1, wherein the application is configured to assign a relative Z-order to the primary view and the secondary view which causes the primary view to be stacked in front of the secondary view.
3. The system according to claim 1, wherein the application is configured to provide a barrier view stacked in between the primary view and the secondary view, wherein the barrier view is opaque and comprises homogenous image data.
4. The system according to claim 1, wherein the one or more display server components comprise a 3D display server component for a 3D display, and wherein the application is configured to signal the 3D display server component that the at least two views represent 3D image content.
5. The system according to claim 4, wherein the 3D display server component provides an API for allowing applications to interface with the 3D display server component, and wherein the application is configured to signal the 3D display server component via the API that the at least two views represent 3D image content, for example by registering an identifier of the at least two views with the 3D display server component via the API.
6. The system according to claim 1, wherein the one or more display server components comprise a 3D display server component, and wherein the 3D display server component is configured to detect that the at least two views represent 3D image content based on metadata of the application.
7. The system according to claim 6, wherein the metadata of the application comprises an identifier of the application.
8. The system according to claim 4, wherein the 3D display server component is configured to composite the at least two views by: arranging the primary view and the secondary view to be simultaneously shown in the display signal in accordance with a stereo display format; or generating one or more further views based on the primary view and the secondary view, and simultaneously arranging the primary view and the one or more further views in the display signal in accordance with a multiview display format.
9. The system according to claim 1, wherein the 3D-enabling auxiliary data is one of the group of: further 2D image data which together with the 2D image data represents a pair of stereo images, or depth-related data indicative of a distance of objects shown in the 2D image data to a camera or viewer.
10. A display device comprising the system according to claim 1.
11. A computer-implemented method of providing views of an application to a window manager of an operating system, wherein the views represent 3D image content for a 3D display, wherein the operating system is configured to provide: the window manager, wherein the window manager is configured to manage visibility of views generated by applications; one or more display server components, the one or more display server components being specific to a type of display and configured to, based on visibility information obtained from the window manager, composite the views into a display signal for display; the method comprising, by the application, providing the 3D image content to the window manager in the form of at least two views which are arranged with respect to each other in accordance with a view configuration, wherein the at least two views comprise a primary view comprising 2D image data and a secondary view comprising 3D-enabling auxiliary data which is indicative of depth of the 2D image data, wherein said providing of the 3D image content by the application comprises: i) stacking the primary view in front of the secondary view to provide a view configuration in which the primary view occludes the secondary view, or ii) providing the primary view to the window manager by indicating a viewport which comprises the 2D image data of the primary view and provide the secondary view to the window manager by arranging the 3D-enabling auxiliary data of the secondary view outside of the viewport, to cause a 2D display server component for a 2D display to omit drawing, or overdraw, the secondary view when compositing the at least two views into the display signal.
12. A or non-transitory computer-readable medium comprising a computer program representing an application, the computer program comprising instructions for causing a processor system to perform the method according to claim 11.
13. A computer-implemented method of compositing views of an application executed on an operating system, wherein the views represent 3D image content for a 3D display, wherein the operating system is configured to provide: a window manager for managing visibility of views generated by applications; a 3D display server component for a 3D display, the 3D display server component being configured to, based on visibility information obtained from the window manager, composite the views into a display signal for the 3D display; wherein the application is configured to provide the 3D image content to the window manager in the form of at least two views which are arranged with respect to each other in accordance with a view configuration, wherein the at least two views comprise a primary view comprising 2D image data and a secondary view comprising 3D-enabling auxiliary data which is indicative of depth of the 2D image data, wherein the application is configured to: i) stack the primary view in front of the secondary view to provide a view configuration in which the primary view occludes the secondary view, or ii) provide the primary view to the window manager by indicating a viewport which comprises the 2D image data of the primary view and provide the secondary view to the window manager by arranging the 3D-enabling auxiliary data of the secondary view outside of the viewport, to cause a 2D display server component for a 2D display to omit drawing, or overdraw, the secondary view when compositing the at least two views into the display signal; the method comprising, by the 3D display server component: determining that the at least two views represent 3D image content on the basis of signaling received from the application, or metadata of the application; and processing the primary view and the secondary view to obtain the display signal for the 3D display.
14. A transitory or non-transitory computer-readable medium comprising a computer program representing a 3D display server component, the computer program comprising instructions for causing a processor system to perform the method according to claim 13.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0051] These and other aspects of the invention are apparent from and will be elucidated with reference to the embodiments described hereinafter. In the drawings,
[0052]
[0053]
[0054]
[0055]
[0056]
[0057]
[0058] It should be noted that items which have the same reference numbers in different Figures, have the same structural features and the same functions, or are the same signals. Where the function and/or structure of such an item has been explained, there is no necessity for repeated explanation thereof in the detailed description.
LIST OF REFERENCE NUMBERS
[0059] The following list of reference numbers is provided for facilitating the interpretation of the drawings and shall not be construed as limiting the claims. [0060] 080 (3D) display [0061] 100 system for displaying views of application [0062] 120 processor subsystem [0063] 122 data communication [0064] 140 memory [0065] 142 data communication [0066] 160 bulk storage [0067] 162 data communication [0068] 180 display output [0069] 182 display data [0070] 200 application [0071] 210 buffer [0072] 212 buffer [0073] 214 buffer [0074] 220 window manager [0075] 240 display server [0076] 252 2D display server component [0077] 254 3D (multiview) display server component [0078] 256 3D (stereo) display server component [0079] 260 Android BSP [0080] 262 Android WindowManager [0081] 264 Android SurfaceFlinger [0082] 280 Service Process [0083] 282 Extension (Hook) [0084] 284 Service API [0085] 300 2D image data [0086] 310 3D-enabling auxiliary data [0087] 400 primary view, 2D view [0088] 410 secondary view, 3D-enabling auxiliary view [0089] 420 Z-order [0090] 430 viewport [0091] 440 display signal for 2D display [0092] 442 display signal for 3D (multiview) display [0093] 444 display signal for 3D (stereo) display [0094] 500 computer readable medium [0095] 510 instruction data
DESCRIPTION OF THE INVENTION
[0096]
[0097] As can be seen in
[0098] The application 200 may then generate a 2D view 400 which comprises the 2D image data 300. The 2D view 400 is also referred to as ‘primary view’. Here, the term ‘comprises’ refers to the 2D view 400 normally showing the 2D image data 300, albeit subject to visibility limitations of the 2D view 400 which may, for example, be imposed by the window manager 220. The application 200 may further generate a 3D-enabling auxiliary view 410 which comprises the 3D-enabling auxiliary data. The 3D-enabling auxiliary view 410 is also referred to as ‘secondary view’. The data of both views 400, 410 may, for example, be stored in respective buffers 210, 212, for example as buffer objects, or in a same buffer as separate buffer objects (not shown in
[0099] The primary view 400 and the secondary view 410 are mutually arranged by the application in accordance with a view configuration which causes a 2D display server component for a 2D display to omit drawing, or overdraw, the secondary view when compositing the at least two views into the display signal. There are various ways to define or provide such a view configuration, as e.g. elucidated with reference to
[0100]
[0101] This concept may also be referred to as ‘explicit overdraw’ in which an output image is updated multiple times. A black or otherwise opaque and homogenous barrier view may be inserted in between the primary view 400 and the secondary view 410 in case the primary view 400 is (semi) transparent. Here, “inserted in between” refers to the barrier view having a Z-order placing it behind the primary view 400 but before the secondary view 410, with the barrier view preferably having a same location and size as the primary view 400 and/or the secondary view 410. Alternatively, if the display server component is able to determine that the secondary view 410 is occluded, the display server component may also entirely omit drawing the secondary view 410.
[0102] It is noted that to cause the overdrawing of ‘legacy’ display server components, the views 400, 410 generated by the application may be of a type that can only be composed by the operating system in order to bypass app composition optimization. For example, in Android, this may be achieved by the views 400, 410 being ‘SurfaceView’ type of views.
[0103] With continued reference to
[0104]
[0105] The 3D display server component 254 may then create a mosaic-like composition of the 2D image data of the primary view 400, labeled ‘2D’ in
[0106] It is noted that also various other known types of multiview compositions may be used instead of a spatial mosaic-like composition. For example, the views may be spatially and/or temporally interleaved. Also other data may be provided in the display signal in addition to or instead of the viewpoints. For example, the 3D-enabling auxiliary data itself may be provided in the display signal, and/or transparency information and/or occlusion information. Another example is that the display signal may comprise a point cloud or a 3D mesh, etc., which are generated from the at least two views. It is noted that in general, the display signal may be provided to the display over a single but also over multiple independent data channels and/or and cables, e.g. via dual DisplayPort.
[0107] According to a second example, the 3D display server component 256 may be configured to generate a display signal 444 for a stereo display. This view composition may take different forms depending on the type of 3D-enabling auxiliary data 310. For example, the 3D-enabling auxiliary data 310 represents further 2D image data which together with the 2D image data represents a pair of stereo images. In this case, if the 2D image data 300 represents a left image and the further 2D image data 310 represents a right image, the 3D display server component 256 may composite them into a side-by-side formatted display signal 444. It is noted that also various other known types of spatial and/or temporal stereo view compositions may be used instead. If, however, the 3D-enabling auxiliary data 310 represents depth-related data indicative of a distance of objects shown in the 2D image data to a camera or viewer, the further 2D image data (e.g., the right image) may be generated using the aforementioned view-rendering or view-synthesis techniques.
[0108]
[0109]
[0110] In the example of
[0111]
[0112] There are various ways to enable the 3D display server component 264 to determine that the stacked views 400, 410 of the application 200 represent 3D image content. In the example of
[0113] Although described with reference to Android, the above measures may be applied to various other types of operating systems by a person skilled in the art of application development for the particular operating system. For example, for *nix-based operating systems (Linux, BSD, Unix, etc.), a wide variety of window managers exist (see https://wiki.archlinux.org/index.php/window_manager) as well as various customizable display servers (e.g., X11, Wayland-based, Mir, DirectFb). For MacOS or iOS (Quartz), the Quartz Window Services may provide at least part of the functionality of the window server as described, and the Quartz Display Services/Quartz Composition Services/XQuartz may configured to provide at least part of the functionality of the display server of display server components as described. For Microsoft Windows, the Desktop Window Manager may provide at least part of the functionality of the window server as described, and the GDI Graphics Device Interface may be configured to provide at least part of the functionality of the display server or display server components as described.
[0114]
[0115] In general, the system may be embodied in or as a separate device, e.g., in or as a set-top box, personal computer, gaming console or similar device that is connectable to a (3D) display. Alternatively, the system may be embodied in or as a display device which comprises the (3D) display, e.g., in or as a smartphone, tablet device, television, display, monitor, etc. In general, the system may be implemented by a device or apparatus. The device or apparatus may comprise one or more (micro) processors which execute appropriate software. Software implementing the functionality of the function(s) may have been downloaded and/or stored in a corresponding memory or memories, e.g., in volatile memory such as RAM or in non-volatile memory such as Flash. Alternatively, the function(s) of the system may be implemented in the device or apparatus in the form of programmable logic, e.g., as a Field-Programmable Gate Array (FPGA), or as an Application-Specific Integrated Circuit (ASIC), or as any other type of circuit or combination of circuits. Any of the software components described in this specification may be represented by instructions for a computer, e.g., executable code, which may be stored on a computer readable medium 500, e.g., in the form of a series 510 of machine readable physical marks and/or as a series of elements having different electrical, e.g., magnetic, or optical properties or values. The executable code may be stored in a transitory or non-transitory manner. Examples of computer readable mediums include memory devices, optical storage devices, online software, etc.
[0116] It should be noted that the above-mentioned embodiments illustrate rather than limit the invention, and that those skilled in the art will be able to design many alternative embodiments.
[0117] In the claims, any reference signs placed between parentheses shall not be construed as limiting the claim. Use of the verb “comprise” and its conjugations does not exclude the presence of elements or steps other than those stated in a claim. The article “a” or “an” preceding an element does not exclude the presence of a plurality of such elements. Expressions such as “at least one of” when preceding a list or group of elements represent a selection of all or of any subset of elements from the list or group. For example, the expression, “at least one of A, B, and C” should be understood as including only A, only B, only C, both A and B, both A and C, both B and C, or all of A, B, and C. The invention may be implemented by means of hardware comprising several distinct elements, and by means of a suitably programmed computer. In the device claim enumerating several means, several of these means may be embodied by one and the same item of hardware. The mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage.