Event-driven dynamic switching between game modes
By enabling rapid switching of quality modes within the application through dedicated controls and interpolation technology, this technology solves the problems of time-consuming rendering settings adjustments and poor user experience in existing technologies. It provides efficient rendering settings adjustments in different scenarios, improving both user experience and performance.
Patent Information
- Application Number
- CN202480046340.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-07-11
- Filing Date
- 2024-04-24
- Publication Date
- 2026-02-17
AI Technical Summary
Existing technologies for adjusting rendering settings in applications are time-consuming and rely on manual user intervention, resulting in a poor user experience. Furthermore, dynamic resolution scaling methods sometimes adjust resolution unreasonably, impacting the user experience.
A dedicated control enables quick switching between quality modes, interpolation technology facilitates smooth transitions between rendering settings, and frame increments and weighted rendering settings are combined to automatically adjust rendering settings, reducing perceived quality or performance loss for the user.
It enables quick and smooth adjustment of rendering settings during application runtime, improving user experience, ensuring a balance between image quality and performance in different scenarios, and reducing the interference of rendering setting adjustments on the user.
Smart Images

Figure CN121548981A_ABST
Abstract
Description
Technical Field
[0001] Various aspects of this disclosure relate to adjustments to the rendering settings of an application; more specifically, various aspects of this disclosure relate to changing the quality mode using a dedicated control. Background Technology
[0002] Modern applications typically have numerous renderer settings that allow rendering image frames from the application with more or less detail, resolution, or special effects. Rendering image frames from the application with more detail, resolution, or special effects slows down the rendering process because generating the image frame may require more processing loops. Additionally, other settings that improve the appearance of the image in the image frame (such as supersampling anti-aliasing) may require rendering portions of the image frame at high resolution and then downsampling those portions to reduce jagged edges within the image, which is also processing loop intensive. Processing loop intensive rendering settings can slow down application operation because operations within the application may depend on the rendering of image frames. This can lead to errors, stuttering, or slow performance, potentially impacting the user experience. Therefore, there may be a trade-off between efficient application operation and the generation of detailed high-resolution image frames and special effects.
[0003] Applications such as video games may generate image frames with varying levels of detail. Generally, generating image frames with less detail requires less processing than generating those with more detail. Therefore, the optimal rendering settings for providing efficient application operation and the highest possible image quality may change during application runtime. For example, when an application generates image frames containing less detail, processing with a more intensive rendering setup (and thus more detailed portions of the overall less detailed image frame) may be feasible without impacting application operation; conversely, when an application generates image frames containing more detail, it may need to process with a less intensive rendering setup (and thus less detail within the overall more detailed image frame) to run the application without affecting its operation.
[0004] Currently, the most common method for changing rendering settings is to require the application's user to navigate through a settings menu and manually configure the application's rendering settings. This is both time-consuming and requires the user to understand how rendering settings affect rendered image frames. Dynamic Resolution Scaling (DRS) is an existing method that automatically changes the resolution while the application is running. DRS relies on frame rendering time or frame rate to estimate when to change the resolution. Therefore, DRS has many design quirks that lead to a less than ideal user experience; for example, if the application pauses on a screen with a lot of detail, the resolution of the paused screen will be low even if a high frame rate is not required.
[0005] It is against this backdrop that the various aspects of this disclosure are presented. Attached Figure Description
[0006] The teachings of this disclosure can be readily understood by considering the following specific embodiments in conjunction with the accompanying drawings, in which: Figure 1 This is a block diagram illustrating an apparatus for rapidly switching between quality modes according to various aspects of this disclosure.
[0007] Figure 2 This is a flowchart illustrating the operation of manually switching quality modes using rendering settings interpolation according to various aspects of this disclosure.
[0008] Figure 3 This is a flowchart illustrating the operation of automatic quality mode switching using rendering settings interpolation according to various aspects of this disclosure.
[0009] Figure 4 It is a flowchart depicting the use of frame increments to dynamically switch between application quality modes.
[0010] Figure 5 This is a diagram illustrating an example implementation of adjusting rendering settings using a weighted rendering settings table according to various aspects of this disclosure.
[0011] Figure 6 It is a block diagram depicting a system for rapidly changing quality patterns according to various aspects of this disclosure. Detailed Implementation
[0012] While the following detailed description contains many specific details for illustrative purposes, those skilled in the art will understand that many variations and modifications of these details are within the scope of this disclosure. Therefore, examples of embodiments of the invention described below are set forth without loss of generality and without implying any limitation on the claimed disclosure.
[0013] The present disclosure recognizes that there are situations where a reduction in frame rate is acceptable when running an application. This contrasts sharply with prioritizing frame rate and per-frame rendering time in previous techniques. Furthermore, the present disclosure acknowledges that users may wish to quickly customize the application's rendering settings without having to navigate through menus, which can be distracting and negatively impact the user experience. Aspects of the present disclosure allow users to quickly switch between quality modes in an application. Each quality mode can have different rendering settings for it. These different rendering settings in quality modes can be set by the application developer or customized by the user.
[0014] Figure 1This is a block diagram illustrating an apparatus for rapidly switching between quality modes according to various aspects of the present disclosure. As shown, apparatus 100 includes an application controller 101, an application renderer 102, and a display 103. Controller 101 may include a dedicated quality mode control 104, which may be a physical control, such as a physical button. Alternatively, the display may include a dedicated virtual quality mode control 105.
[0015] The application controller (or controller) 101 includes a dedicated quality mode control 104. Additionally, the application controller 101 may include one or more function buttons 108 and / or one or more input controls 109. These input controls may be, for example, directional keys (D-Pad), joysticks, thumbsticks, touchpads, or inertial measurement units.
[0016] Activation of a dedicated quality mode control 104 or 105 signals the application renderer to switch from rendering the application in a first quality mode to rendering it in a second quality mode. The dedicated quality mode control can be configured to provide the signal via a suitable circuitry in the application controller 101. For example, the quality mode control can be a switch that, when activated, causes an electrical pulse to travel to the application renderer, which includes hardware or software logic that, in response to the electrical pulse, switches the application renderer 102 from one quality mode to another. In an implementation with a dedicated virtual quality mode control, the dedicated virtual control 105 can be, for example, but not limited to, a portion of the display defined by a pixel position. When the cursor moves to the pixel position defined by the dedicated virtual control on the display and a mouse button is clicked, the program detects this click as the virtual control being pressed and sends a signal to the application renderer indicating a switch in quality mode. In some implementations, the display 103 can be a touchscreen, and in such cases, the dedicated virtual quality mode control can be activated when a touchscreen element detects a touch event at a position on the display corresponding to the pixel position of the quality mode control. In implementations that include a touchscreen, the application controller can be part of the touchscreen display.
[0017] Application renderer 102 may be, for example, but not limited to, special-purpose circuit system logic, such as application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), or any other hardware component suitable for rendering an application. In some implementations, the application renderer may include a general-purpose processor, such as a microcontroller or central processing unit or core (CPU) 105. The application renderer may also include other supporting processors, such as a graphics processing unit (GPU) 107. Additionally, the application renderer may include memory 106, such as random access memory (RAM) and / or read-only memory (ROM). In some implementations, the application renderer is responsible not only for rendering the application but also for performing some or all of the computations required to execute the application. The application may be stored in memory 106, or the circuit system logic of the application renderer may be specifically arranged to create the application and render image frames from the application on the display. In some other implementations, the application may be stored on a non-transitory computer-readable medium or external memory or storage device. In some implementations, application renderer 102 may be located on a server or computer system remote from controller 101 and display 103 and may receive signals from a quality mode button via a network.
[0018] Figure 2 This is a flowchart illustrating the operation of manually switching quality modes using rendering settings interpolation according to various aspects of this disclosure. As shown during application execution, image frames can be rendered by application rendering process 208 according to a first quality mode 202. The first quality mode may include a first set of one or more rendering settings 202. Some or all of these rendering settings 202 may be selected by the application user, the application developer, or the device manufacturer. The rendering settings 202 set herein by the first quality mode 201 may include, but are not limited to: active shader, texture resolution, level of detail (LOD), MIP map level, filtering, resolution, anti-aliasing type, ray tracing, and global illumination. Generally, depending on the characteristics of the application, the rendering settings 202 set by the first quality mode 201 may include at least one setting, or may include up to several dozen settings. For example, but not limited to, the application rendering process may be implemented in hardware or software, or a combination of hardware and software, for example, via Figure 1 The application renderer 102. Rendering settings 201 affect the computational intensity of the application rendering process, for example, in terms of processing recycling rate.
[0019] When signal 207 indicates that the dedicated quality mode switching control has been activated, the application rendering process 208 switches at 203 from rendering the application in the first quality mode 201 to rendering the application in the second quality mode 204.
[0020] The second quality mode 204 can be characterized by a second set of one or more rendering settings 205, wherein the value of at least one rendering setting differs from the value of the corresponding setting of the first quality mode 201. Furthermore, some or all values of the rendering settings 205 of the second quality mode may differ from the values of the corresponding rendering settings 202 of the first quality mode. Depending on the implementation, the rendering settings 205 of the second quality mode 204 may be computationally more or less intensive than the rendering settings values of the first quality mode 201. For example, but not limited to, if the rendering settings of the first quality mode are computationally less intensive (e.g., settings that prioritize speed or frame rate rather than image quality), the rendering settings of the second quality mode may be computationally more intensive (thus producing a higher quality image). Alternatively, the rendering settings values of the second quality mode can be selected to support application speed or image frame quality.
[0021] In some implementations, when switching from the rendering settings of the first quality mode 201 to the rendering settings of the second quality mode 204, the renderer can interpolate between the settings of the two quality modes by changing to an intermediate rendering setting 206. Interpolating between the rendering settings of the first and second quality modes may involve changes in settings that are not readily apparent to the user. Additionally, during interpolation, the application rendering process 208 may change back and forth between the intermediate rendering settings for a period of time, resulting in a gradual change between the rendering settings 202 of the first quality mode 201 and the rendering settings 205 of the second quality mode 204, and the resulting quality changes may be imperceptible to the user. For example, but not limited to, the device or system may pause at the intermediate rendering setting for 2 seconds before switching to the second quality mode. It should be noted that at a rate of 60 frames per second, 2 seconds is sufficient to render 120 frames. In some cases, a shorter duration of pausing at the intermediate rendering setting (e.g., 1 second, 0.5 seconds, or less) may be sufficient. Furthermore, in some implementations, the rendering process 208 may switch through two or more different intermediate rendering setting value levels before reaching the rendering settings of the second quality mode. When the second quality mode is computationally less dense than the first quality mode, the intermediate rendering setting value can be any rendering setting value that is computationally less dense than the corresponding setting value of the first quality mode and computationally more dense than the equivalent setting of the second quality mode. Similarly, when the second quality mode is computationally more dense than the first quality mode, the intermediate rendering settings can be computationally less dense than the second quality mode and computationally more dense than the first quality mode.
[0022] Examples of rendering settings (e.g., with intermediate settings) include, but are not limited to: active shader, texture resolution, geometry LOD, MIP map level, filtering, resolution, anti-aliasing type, path tracing, and global illumination. The intermediate setting value for the active shader can be the number of active shaders between the number of active shaders in a first quality mode and the number of active shaders in a second quality mode. For texture resolution, the intermediate setting value can be the texture resolution between the texture resolution in the first quality mode and the texture resolution in the second quality mode. The value for the intermediate geometry level of detail can include geometry with a tessellation amount between the tessellation level in the first quality mode and the tessellation level in the second quality mode. The intermediate MIP map level can be the MIP map level between the MIP map level in the first quality mode and the MIP map level in the second quality mode. Anisotropic filtering levels change the number of samples during filtering and typically have levels such as, but not limited to, x2, x4, x8, and x16. Additionally, filtering can also include bilinear and trilinear filtering settings. Intermediate levels of filtering can be filtering levels between the first and second quality modes. In some cases, intermediate filtering levels can lie between anisotropic filtering levels and different filtering modes; for example, trilinear filtering lies between x2 anisotropic filtering and bilinear filtering. Supersampling anti-aliasing levels change the resolution of samples acquired during anti-aliasing and typically have levels of 2x, 4x, 6x, and 8x. Additionally, there are other computationally more intensive anti-aliasing modes (such as temporal anti-aliasing) and other less intensive anti-aliasing modes (such as multisampling). Intermediate anti-aliasing modes can be anti-aliasing levels between the anti-aliasing levels of a first quality mode and a second quality mode. For example, but not limited to, if the rendering setting of the first quality mode is 8x supersampling anti-aliasing and the rendering setting of the second quality mode is 2x supersampling anti-aliasing, then the corresponding intermediate mode setting could be 6x supersampling anti-aliasing. In another anti-aliasing example, the first quality mode may include a temporal anti-aliasing mode, and the second quality mode may not include an anti-aliasing mode; the intermediate rendering setting could be multisampling anti-aliasing. The intermediate resolution setting is simply a resolution setting between the first and second quality modes. An intermediate resolution setting can be selected to maintain the monitor's aspect ratio, allowing image frames to be stretched to fit the screen without excessively distorting the image.
[0023] As another example, for path tracing, one possible quality adjustment setting is the number of samples per pixel. Generally, for example, more samples result in higher quality, but path tracing computation takes longer. In this case, an intermediate resolution setting could be a number of samples between the high-resolution and low-resolution settings.
[0024] A second activation of the quality mode control can generate a signal to switch back from the second quality mode 204 to the first quality mode 201. In some implementations, rendering settings can be interpolated when switching back from the second quality mode to the first quality mode. In some alternative implementations, three or more quality modes may exist. In this case, the device or system can switch between two or more different quality modes based on signals from dedicated controls 104 or 105. Additionally, rendering settings can be interpolated during switching between three or more quality modes.
[0025] In this way, users can quickly switch between a first quality mode that emphasizes image quality and special effects when quality is important to the user, and a second quality mode that emphasizes processing speed when frame rate, application speed, or responsiveness is important to the user. Furthermore, interpolation between quality modes reduces the user's perception of quality loss when switching to a less computationally intensive quality mode, and can reduce the perception of responsiveness loss when switching to a more computationally intensive quality mode.
[0026] This disclosure includes various aspects, including implementations that enable automatic switching of quality modes. For example, Figure 3 This is a flowchart illustrating the operation of an implementation of automatic quality mode switching using rendering settings interpolation according to aspects of this disclosure. In this implementation, the application rendering process 303 automatically switches between quality modes based on the application 301. The application renderer 303 can receive a signal 302 from the application 301 to switch from rendering in a first quality mode to rendering in a second quality mode. For example, but not limited to, the application 301 can be programmed to send the signal 302 to the application rendering process 303 in the form of a message at different points during application rendering. The application developer can choose the points at which the application provides signals to the rendering process. The developer can manually set the points at which the quality mode switching signal is sent, or can develop a custom loop on when the quality mode switching should occur. Each application may have its own set of quality modes and corresponding rendering settings. In some implementations, an existing application may access the quality mode switching signal through, for example, but not limited to, application programming that detects the application state corresponding to a situation where quality mode switching would be beneficial. The application developer can choose the rendering settings for switching between quality modes. The switching between quality modes can adopt the methods described above. Figure 1 and Figure 2 The process is executed in a similar manner to the discussion, and the rendering process 303 can also interpolate between at least some rendering settings as part of the switching between quality modes.
[0027] Alternatively, the application rendering process 303 may monitor signal 302 of the application 301 and change the rendering quality mode when the signal is detected. For example, the rendering process may detect certain pixels or sets of information in a frame or frame header and use that information to change the rendering mode.
[0028] In this way, application developers can quickly change application rendering settings during application execution. Interpolation of rendering settings can reduce the perception of quality loss when switching to a less computationally intensive quality mode and reduce the perception of responsiveness loss when switching to a more computationally intensive quality mode.
[0029] In some implementations, the application can determine whether to switch between quality modes based on information about the frame being rendered. For example, Figure 4 This is a flowchart depicting the dynamic switching between application quality modes using frame increments. As shown, the previous frame n-1 401 is rendered by the application rendering process. Then, the current frame n 402 is rendered by the same process, and the increment (i.e., difference) between the pixel values of frame n and the pixel values of frame n-1 is obtained. Here, the pixel values can be the luma and / or chroma values of pixels in the frame. Luma typically refers to the brightness of a pixel in a video image. Chroma typically refers to the color difference value of pixels in a video image. The increment here can be the absolute difference between an element in frame n-1 and a corresponding element in frame n. The result is incremented frame 403, which shows the change between frame n-1 and frame n.
[0030] The values of the incremental frames can be summed to find a total measure of the difference between frame n-1 and frame n. This sum can then be compared to a weighted table 404, which contains weighted rendering settings and thresholds used to adjust the rendering settings based on the sum of pixel increments. In some implementations, the sum can be normalized to a range between 0.0 and 1.0. For example, but not limited to, a value of 0.0 is set to a static scene where there are no pixel changes, and 1.0 is a complete scene change where pixel values are not shared between frames. In this example, a value of 0.0 can trigger the highest operable quality setting (the most computationally intensive setting) and the quality setting may decrease as the increment approaches 1.0, with the lowest operable quality setting (the least computationally intensive setting) at 1.0, thus supporting higher frame rates when large pixel increments exist. In some implementations, two frame increments can be generated, one for luminance and one for chrominance. In this implementation, the table may include thresholds for each increment (e.g., one for chroma and one for luminance). In some implementations, some rendering settings may only affect performance when a single type of pixel value (e.g., luminance only or chroma only) changes; in such implementations, the table may only include thresholds for the pixel increments for which the rendering settings are effective. As will be discussed later, rendering settings may be weighted, with weights based on the relative effectiveness of the rendering settings for computational intensity. For example, but not limited to, settings with lower weights may be those with less impact on application performance, and settings with higher weights may be those with a significant impact on application performance. A more specific, non-limiting example is that when rendering an application, if the supersampling anti-aliasing mode level is 8X, a setting with a supersampling anti-aliasing mode level of 4X may have a lower weight than multisampling anti-aliasing.
[0031] Once a rendering setting value has been selected based on the sum of the pixel increments, the selected rendering setting is applied to the second quality mode 405. The rendering process then switches to rendering frame n+1406 in the second quality mode 405. This loop then repeats in the next iteration, as frame n becomes frame n-1 and frame n+1 becomes frame n.
[0032] Therefore, rendering settings can be automatically selected based on pixel data from image frames generated by the application. This method offers the following benefits: it supports image quality when image frames change infrequently, and performance when image frames change significantly. This is beneficial because when running applications such as video games, images often change frequently, creating a sequence of actions, and application performance is more beneficial to the player experience than quality, as slow application performance becomes particularly noticeable during such sequences. Conversely, when images change only slightly, the application may be paused or in a menu state, and in such cases, image quality may provide a better user experience because the user may have ample time to view the image during pauses or menus.
[0033] Figure 5 This is an illustration of an example implementation of rendering settings adjustment using a weighted rendering settings table according to various aspects of this disclosure. Each application may have an associated rendering table. As shown, pixel increment 501 can be calculated for both chroma and luminance values. Rendering settings table 502 can be used to determine changes to rendering settings values. Many different applications may use rendering settings tables, and each different application may have a different associated table. In the implementation shown, the table includes columns for luminance threshold 503, chroma threshold 504, and weights 505. The rendering settings in this table are arranged by weight 503, with less computationally intensive settings (i.e., settings whose values have less impact on performance when changed) listed first. The first setting listed in this example table is shader 506 in a shader group, which has two levels, and these levels can be, for example, but not limited to, different numbers of active shaders or different types of shaders. Each shader level has a threshold associated with that level, and the shader at that level will be active if the frame increment reaches at least that threshold. In this implementation, shader setting header 506 also includes a threshold indicating that the shader will not be active if the frame increment is not reached. Another resolution setting header shown is texture resolution. The texture resolution setting includes a texture resolution value of 1920x1080 as the first level in texture resolution nesting group 510, and includes values of 4K or 4096x2160 as the second level in the nesting group. As discussed, the weights and thresholds are selected such that the system can use frame increments to change the setting values based on the current rendering settings.
[0034] For example, but not limited to, if the system is rendering at a 2K texture resolution and the frame increment increases and reaches a 1080 threshold, the system may switch to rendering at 1920x1080 instead of 2K texture resolution. Similarly, for example, but not limited to, if the frame increment decreases and reaches a 4K threshold, the system may begin rendering at a 4K texture resolution. It should be noted that there is a difference between which texture levels (mip levels) to use and what resolution to render at. Both can be factors that affect the balance between quality and performance.
[0035] Another setting shown is filter 507. The application in this implementation includes only a single filter setting, the value of which is changed by toggling the filter on or off. Additionally, in this example, it is found that filtering in this application is only effective based on photometric changes, and therefore the table only includes photometric thresholds.
[0036] In this implementation, the application also includes multiple anti-aliasing settings. These settings are shown in nested groups under the Anti-aliasing heading. The first subgroup is Multisampling Anti-aliasing (MSAA) 508. The second subheading shown is Supersampling Anti-aliasing (SSAA), which includes two subgroups, 4x SSAA 509 and 8x SSAA, each with a corresponding threshold. It should be noted that the tables shown are for illustrative purposes only, and the actual tables stored in memory may omit column labels and nested groups.
[0037] When the frame increment reaches at least the threshold in the rendering settings table, the rendering settings are applied to quality mode 511, and the application rendering process can switch to the new quality mode to render the next frame of the application with the determined rendering settings.
[0038] The thresholds and weights for each rendering setting in Table 502 can be manually determined by the application developer through experimentation. Alternatively, in some implementations, the thresholds for each rendering setting can be determined using a neural network trained with a machine learning algorithm to determine the thresholds and weights for the rendering settings. During training, the neural network can be provided with mask rendering settings, frame pixel increments, and system performance targets. The neural network can be trained to predict the thresholds and weights of the rendering settings based on the frame increments to achieve the system performance targets. Data can be generated by running each application with different settings and selecting the settings that achieve the performance targets at various points during the application's execution. During training, the machine learning algorithm modifies the weights and transitions of the neural network based on the loss calculated between the predicted threshold and weight settings and the experimentally determined true rendering settings.
[0039] In this way, rendering settings that match the application's requirements can be automatically selected. High-quality rendering is allowed when processing power is not needed to run other application processes, and lower-quality rendering is provided when processing power is required. This also solves the problem of low-quality pause screens, because the image does not move during the pause screen, thus supporting high-quality rendering settings.
[0040] Figure 6 This is a block diagram depicting a system for rapidly changing quality modes according to various aspects of this disclosure. The system may include a computing device 600 coupled to an application controller 602. The application controller 602 may be a game controller, a touchscreen, a microphone, or other device allowing the user to input voice data into the system. Additionally, the application controller 602 may include one or more IMUs. The application controller 602 may include dedicated controls (QMs), such as a dedicated button for switching quality modes.
[0041] The computing device 600 may include one or more processor units and / or one or more graphics processing units (GPUs) 603, which may be configured according to well-known architectures such as, for example, single-core, dual-core, quad-core, multi-core, processor-coprocessor, unit processor, etc. The computing device may also include one or more memory units 604 (e.g., random access memory (RAM), dynamic random access memory (DRAM), read-only memory (ROM), etc.).
[0042] Processor unit 603 can execute one or more programs, portions of which can be stored in memory 604, and processor 603 can be operatively coupled to memory (e.g., by accessing memory via data bus 605). These programs may include a rendering program or process 623. Additionally, memory 604 may contain application programs 608 that can generate image frames for rendering by rendering program 623 during execution. Memory 604 may also contain data such as rendering setting thresholds or table 610, quality mode 609, and signal data, which are generated by rendering program 623 during execution. Figure 2 , Figure 3 and Figure 4 This method of quickly switching quality modes is used as shown. In some implementations, the system may also include a neural network trained with a machine learning algorithm to determine the weights and thresholds of the rendering settings table 610. In some implementations, the rendering program or process, as well as causing the computer to perform actions such as... Figure 2 , Figure 3 and Figure 4Sufficient additional code for the method of quickly switching quality modes shown can be stored as computer-executable instructions in a non-transitory computer-readable medium, and when executed by the system, can cause the system to execute such a method.
[0043] The computing device 600 may also include well-known support circuitry, such as input / output (I / O) 607, circuitry, power supply (P / S) 611, clock (CLK) 612, and cache 613, which may communicate with other components of the system, for example, via a digital bus 605. The computing device may include a network interface 614. The processor unit 603 and the network interface 614 may be configured to implement a local area network (LAN) or PAN via a suitable network protocol (e.g., via Bluetooth for a personal area network (PAN)). The computing device may optionally include a mass storage device 615 (such as a disk drive, CD-ROM drive, tape drive, flash memory, etc.), and the mass storage device may store programs and / or data. The computing device may also include a user interface 616 for facilitating interaction between the system and the user. The user interface may include a keyboard, mouse, light pen, gamepad, touch interface, or other device.
[0044] The computing device 600 may include a network interface 614 to facilitate communication via an electronic communication network 620. The network interface 614 may be configured to enable wired or wireless communication via a local area network (LAN) and a wide area network (WAN) such as the Internet. The system 600 may send and receive data and / or requests for files via one or more message packets through the network 620. Message packets sent via the network 620 may be temporarily stored in a buffer in memory 604. In some implementations, the system may be remotely operated, sending compressed, rendered image frames to a thin client device via the network 620 and receiving application input from the thin client device. In some such implementations (e.g., involving adaptive streaming algorithms), network conditions may be taken into account in adjusting rendering settings, in addition to factors such as frame increments. Adjustments to rendering settings may also affect the compressibility of image data.
[0045] Various aspects of this disclosure provide efficient switching between video quality modes, thereby minimizing disruption to the user application experience. While specific embodiments have been provided to demonstrate switching between video quality modes, these embodiments are described by way of example and not limitation. Those skilled in the art, upon reading this disclosure, will recognize additional embodiments falling within the spirit and scope of this disclosure.
[0046] It should be understood that the various features disclosed herein can be used to combine or assemble the various implementation schemes and methods described herein into a specific implementation. Therefore, the examples provided are merely possible examples and are not limited to a variety of implementations that can be further defined by combining various elements. In some examples, some implementations may include fewer elements without departing from the spirit of the disclosed or equivalent implementations.
[0047] The aspects of this disclosure can be practiced with various computer system configurations, including handheld devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. Embodiments of this disclosure can also be practiced in distributed computing environments where tasks are performed by remote processing devices linked via wired or wireless networks.
[0048] In light of the above implementations and schemes, it should be understood that various aspects of this disclosure can employ a variety of computer-implemented operations involving data stored in a computer system. These operations are those that require the physical manipulation of physical quantities. Any operation described herein that forms part of the embodiments of this disclosure is a useful machine operation. Embodiments of the invention also relate to an apparatus or device for performing these operations. The device may be specifically constructed for the desired purpose, or the device may be a general-purpose computer selectively activated or configured by a computer program stored in a computer. Specifically, various general-purpose machines may be used with computer programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized device to perform the desired operations.
[0049] This disclosure can also be embodied as computer-readable code on a computer-readable medium. A computer-readable medium is any data storage device capable of storing data that can subsequently be read by a computer system. Examples of computer-readable media include hard disk drives, network attached storage devices (NAS), read-only memory, random access memory, CD-ROMs, CD-Rs, CD-RWs, magnetic tapes, and other optical and non-optical data storage devices. The computer-readable medium may include computer-readable tangible media distributed across network-coupled computer systems, enabling the distributed storage and execution of computer-readable code.
[0050] Although the method operations are described in a specific order, it should be understood that other housekeeping operations may be performed between operations, or operations may be adjusted so that they occur at slightly different times, or they may be distributed in a system that allows processing operations to occur at various intervals associated with the processing, as long as the processing of the covered operations is performed in the desired manner.
[0051] Although the foregoing disclosure has been described in considerable detail for the purposes of clarity, it will be apparent that certain changes and modifications may be practiced within the scope of the appended claims. Therefore, embodiments of the invention are to be considered illustrative rather than restrictive, and embodiments of this disclosure are not limited to the details given herein, but may be modified within the scope of the appended claims and their equivalents.
Claims
1. An apparatus comprising: an application renderer configured to render an application in a first quality mode and to switch rendering of the application from the first quality mode to a second quality mode when a signal is detected from the application.
2. The apparatus of claim 1, wherein the signal comprises a rendering mode switch message received from the application.
3. The apparatus of claim 1, wherein the signal is detected from an image frame of the application.
4. The apparatus of claim 1, wherein the signal is detected from code of the application.
5. The apparatus of claim 1, wherein the signal indicates a rendering setting value of the second quality mode.
6. The apparatus of claim 1, wherein the application renderer is further configured to interpolate between rendering setting values of the first quality mode and rendering setting values of the second quality mode for a period of time before reaching the rendering setting values of the second quality mode.
7. A system comprising: a processor; a memory coupled with the processor, wherein the memory comprises non-transitory instructions embedded in the memory that, when executed by the processor, cause the processor to perform a method comprising: rendering an application in a first quality mode; and switching rendering of the application from the first quality mode to a second quality mode when a signal is detected from the application.
8. The system of claim 7, wherein the signal comprises a rendering mode switch message received from the application.
9. The system of claim 7, wherein the signal is detected from an image frame of the application.
10. The system of claim 7, wherein the signal is detected from code of the application.
11. The system of claim 7, wherein the signal indicates a rendering setting value of the second quality mode.
12. The system of claim 7, wherein the non-transitory instructions further comprise interpolating between rendering setting values of the first quality mode and rendering setting values of the second quality mode for a period of time before reaching the rendering setting values of the second quality mode.
13. A non-transitory computer readable medium comprising executable instructions, wherein the executable instructions, when executed by a computer, cause the computer to perform a method comprising: rendering an application in a first quality mode; and switching rendering of the application from the first quality mode to a second quality mode when a signal is detected from the application.
14. The non-transitory computer readable medium of claim 13, wherein the signal comprises a rendering mode switch message received from the application.
15. The non-transitory computer readable medium of claim 13, wherein the signal is detected from an image frame of the application.
16. The non-transitory computer readable medium of claim 13, wherein the signal is detected from code of the application. 17. The non-transitory computer-readable medium of claim 13, wherein the signal indicates a rendering setting of the second quality mode.
18. The non-transitory computer-readable medium of claim 13, wherein the executable instructions further comprise interpolating between a rendering setting value of the first quality mode and a rendering setting value of the second quality mode for a period of time before reaching the rendering setting value of the second quality mode.