US20140267439A1 - Image Delivery Architecture - Google Patents

Image Delivery Architecture Download PDF

Info

Publication number
US20140267439A1
US20140267439A1 US13/929,725 US201313929725A US2014267439A1 US 20140267439 A1 US20140267439 A1 US 20140267439A1 US 201313929725 A US201313929725 A US 201313929725A US 2014267439 A1 US2014267439 A1 US 2014267439A1
Authority
US
United States
Prior art keywords
image
client device
resolution
content item
recited
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US13/929,725
Inventor
Jon Jenkins
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Pinterest Inc
Original Assignee
Pinterest Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Pinterest Inc filed Critical Pinterest Inc
Priority to US13/929,725 priority Critical patent/US20140267439A1/en
Assigned to Pinterest, Inc. reassignment Pinterest, Inc. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: JENKINS, JON
Priority to PCT/US2014/044676 priority patent/WO2014210514A1/en
Publication of US20140267439A1 publication Critical patent/US20140267439A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R19/00Arrangements for measuring currents or voltages or for indicating presence or sign thereof
    • G01R19/0092Arrangements for measuring currents or voltages or for indicating presence or sign thereof measuring current only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformation in the plane of the image
    • G06T3/40Scaling the whole image or part thereof
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02MAPPARATUS FOR CONVERSION BETWEEN AC AND AC, BETWEEN AC AND DC, OR BETWEEN DC AND DC, AND FOR USE WITH MAINS OR SIMILAR POWER SUPPLY SYSTEMS; CONVERSION OF DC OR AC INPUT POWER INTO SURGE OUTPUT POWER; CONTROL OR REGULATION THEREOF
    • H02M1/00Details of apparatus for conversion
    • H02M1/08Circuits specially adapted for the generation of control voltages for semiconductor devices incorporated in static converters
    • H02M1/088Circuits specially adapted for the generation of control voltages for semiconductor devices incorporated in static converters for the simultaneous control of series or parallel connected semiconductor devices
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02MAPPARATUS FOR CONVERSION BETWEEN AC AND AC, BETWEEN AC AND DC, OR BETWEEN DC AND DC, AND FOR USE WITH MAINS OR SIMILAR POWER SUPPLY SYSTEMS; CONVERSION OF DC OR AC INPUT POWER INTO SURGE OUTPUT POWER; CONTROL OR REGULATION THEREOF
    • H02M3/00Conversion of dc power input into dc power output
    • H02M3/02Conversion of dc power input into dc power output without intermediate conversion into ac
    • H02M3/04Conversion of dc power input into dc power output without intermediate conversion into ac by static converters
    • H02M3/10Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode
    • H02M3/145Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal
    • H02M3/155Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only
    • H02M3/156Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only with automatic control of output voltage or current, e.g. switching regulators
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02MAPPARATUS FOR CONVERSION BETWEEN AC AND AC, BETWEEN AC AND DC, OR BETWEEN DC AND DC, AND FOR USE WITH MAINS OR SIMILAR POWER SUPPLY SYSTEMS; CONVERSION OF DC OR AC INPUT POWER INTO SURGE OUTPUT POWER; CONTROL OR REGULATION THEREOF
    • H02M3/00Conversion of dc power input into dc power output
    • H02M3/02Conversion of dc power input into dc power output without intermediate conversion into ac
    • H02M3/04Conversion of dc power input into dc power output without intermediate conversion into ac by static converters
    • H02M3/10Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode
    • H02M3/145Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal
    • H02M3/155Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only
    • H02M3/156Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only with automatic control of output voltage or current, e.g. switching regulators
    • H02M3/157Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only with automatic control of output voltage or current, e.g. switching regulators with digital control
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02MAPPARATUS FOR CONVERSION BETWEEN AC AND AC, BETWEEN AC AND DC, OR BETWEEN DC AND DC, AND FOR USE WITH MAINS OR SIMILAR POWER SUPPLY SYSTEMS; CONVERSION OF DC OR AC INPUT POWER INTO SURGE OUTPUT POWER; CONTROL OR REGULATION THEREOF
    • H02M3/00Conversion of dc power input into dc power output
    • H02M3/02Conversion of dc power input into dc power output without intermediate conversion into ac
    • H02M3/04Conversion of dc power input into dc power output without intermediate conversion into ac by static converters
    • H02M3/10Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode
    • H02M3/145Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal
    • H02M3/155Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only
    • H02M3/156Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only with automatic control of output voltage or current, e.g. switching regulators
    • H02M3/158Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only with automatic control of output voltage or current, e.g. switching regulators including plural semiconductor devices as final control devices for a single load
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03LAUTOMATIC CONTROL, STARTING, SYNCHRONISATION, OR STABILISATION OF GENERATORS OF ELECTRONIC OSCILLATIONS OR PULSES
    • H03L5/00Automatic control of voltage, current, or power
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M1/00Analogue/digital conversion; Digital/analogue conversion
    • H03M1/66Digital/analogue converters
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02MAPPARATUS FOR CONVERSION BETWEEN AC AND AC, BETWEEN AC AND DC, OR BETWEEN DC AND DC, AND FOR USE WITH MAINS OR SIMILAR POWER SUPPLY SYSTEMS; CONVERSION OF DC OR AC INPUT POWER INTO SURGE OUTPUT POWER; CONTROL OR REGULATION THEREOF
    • H02M1/00Details of apparatus for conversion
    • H02M1/0003Details of control, feedback or regulation circuits
    • H02M1/0009Devices or circuits for detecting current in a converter
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02MAPPARATUS FOR CONVERSION BETWEEN AC AND AC, BETWEEN AC AND DC, OR BETWEEN DC AND DC, AND FOR USE WITH MAINS OR SIMILAR POWER SUPPLY SYSTEMS; CONVERSION OF DC OR AC INPUT POWER INTO SURGE OUTPUT POWER; CONTROL OR REGULATION THEREOF
    • H02M3/00Conversion of dc power input into dc power output
    • H02M3/02Conversion of dc power input into dc power output without intermediate conversion into ac
    • H02M3/04Conversion of dc power input into dc power output without intermediate conversion into ac by static converters
    • H02M3/10Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode
    • H02M3/145Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal
    • H02M3/155Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only
    • H02M3/156Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only with automatic control of output voltage or current, e.g. switching regulators
    • H02M3/1566Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only with automatic control of output voltage or current, e.g. switching regulators with means for compensating against rapid load changes, e.g. with auxiliary current source, with dual mode control or with inductance variation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M1/00Analogue/digital conversion; Digital/analogue conversion
    • H03M1/66Digital/analogue converters
    • H03M1/68Digital/analogue converters with conversions of different sensitivity, i.e. one conversion relating to the more significant digital bits and another conversion to the less significant bits
    • H03M1/682Digital/analogue converters with conversions of different sensitivity, i.e. one conversion relating to the more significant digital bits and another conversion to the less significant bits both converters being of the unary decoded type
    • H03M1/685Digital/analogue converters with conversions of different sensitivity, i.e. one conversion relating to the more significant digital bits and another conversion to the less significant bits both converters being of the unary decoded type the quantisation value generators of both converters being arranged in a common two-dimensional array

Definitions

  • cloud-based storage for various digital content items (e.g., text, audio, images, and video items). Following storage, these content items may be downloaded or streamed from the cloud-based computing services to cone or more client devices.
  • Many sites exist today allow users to post or otherwise store their own content in cloud-based storage for either private or public consumption. For instance, sites like Flickr®, Facebook®, Pinterest®, Dropbox®, YouTube®, and others allow users to post content in the form of text, images, audio, and video for others to view.
  • a logical grouping of servers that deliver content to clients is often referred to as a content delivery network or CDN.
  • the common arrangement further includes backend servers that perform various functions such as data aggregation, storage, analysis, and searching.
  • the client-facing or frontend servers communicate with the backend servers as part of the process for serving content to a user.
  • an intake server may use its central processing units (CPUs) to create multiple versions, such as a smaller version of the image (e.g., 100 ⁇ 76 or 3 kB), a medium version of the image (e.g., 512 ⁇ 384 or 20 kB), and a bigger version of the image (e.g., 640 ⁇ 480 or 50 kB).
  • CPUs central processing units
  • the content delivery network When the content delivery network receives a request for the image, it determines the display requirements of the client device and initiates a fetch to retrieve the appropriate version of the image.
  • the CDN may fetch the small version of the image from the backend content storage. This small version is ultimately served to the client device.
  • the CDN may fetch the bigger version or the full resolution version of the image from the backend content storage. The CDN then serves this larger version of the image to the client device.
  • FIG. 1 illustrates an example image delivery architecture in which only a single copy of a content item, such as an image, is maintained and any new version of the content item is produced at the time of delivery.
  • a content item such as an image
  • FIG. 2 is a block diagram showing select components in a content delivery network used in the image delivery architecture of FIG. 1 .
  • FIG. 2 further illustrates how the content item is scaled at the time of delivery.
  • FIG. 3 is a block diagram showing additional select components in the content delivery network similar to FIG. 2 , but further illustrating use of boundary markers to segment the content item for parallel processing during content transformation.
  • FIGS. 4 and 5 show a flow diagram illustrating an example process executed by various devices in the architecture to store a single version of a content item and transform the content item at the time of delivery to different client devices.
  • FIG. 6 illustrates another example image delivery architecture in which only a single copy of a content item is maintained and versions of the content item are scaled by the client device after delivery.
  • FIG. 7 is a flow diagram illustrating an example process executed by various devices in the architecture of FIG. 6 to store a single version of a content item and transform the content item after delivery to the customer.
  • This disclosure describes architectures and techniques for storing content items in cloud-based storage and delivering the content items from the cloud-based storage to client devices in response to requests from users.
  • a content item such as an image
  • the architecture described herein may store as little as just a single copy of the content item.
  • a full resolution version of the image is stored in the cloud-based storage.
  • the architecture significantly reduces the number of copies of the content item (e.g., 1, 2 or a few) to be stored in comparison to conventional architectures that stored a full set of possible rendered versions (e.g., on a scale of dozens of copies in various formats and sizes).
  • the frontend content delivery network is configured with servers that are equipped with one or more graphic processing units (GPUs).
  • GPUs graphic processing units
  • a GPU is a specialty electronic circuit designed to rapidly manipulate and accelerate the creation of visual images for output to a display.
  • the CDN determines the display capabilities of the requesting device either from data received with the request or through independent processes.
  • the CDN retrieves the image from the cloud-based storage and uses the GPUs to rescale the image in real-time at the time of delivery to the client device.
  • FIG. 1 illustrates an example architecture of a computing system 100 that includes cloud-based storage and computing resources 102 to receive content from, and serve content to, client devices associated with various users.
  • the cloud resources 102 may be representative of various sites on the web that allow users to store content and subsequently share or retrieve that content using any number of devices. Examples of such sites might include entertainment sites, organization or collection sites, photo sites, social network sites, e-commerce sites, advertising sites, or the like.
  • a first user 104 uses a first client device 106 , such as a desktop computer, to post content items for storage in the cloud resources 102 .
  • the content items may include any type of media, such as text, audio, images, and video.
  • the content items may take the form of textual posts, digital photographs, songs, movies, and so forth.
  • the user 104 is on a site that allows the user to post digital images.
  • the content items stored in the cloud resources 102 may be placed there through other techniques than a user uploading the items.
  • the cloud resources 102 may communicate with other resources (e.g., such as other websites or storage locations) to retrieve and store the content items.
  • a graphical user interface (GUI) 108 is depicted on the display of the client device 106 .
  • the GUI 108 may be rendered based on instructions provided by the site to the computer's browser.
  • the GUI 108 includes multiple post areas 110 , each of which has an associated image or collection of images. As shown here, ten images are shown posted, including images I 1 -I 9 and a new image 112 of a person's portrait, as represented by the smiley face symbol.
  • the GUI 108 allows the user to upload the digital images for storage in the cloud resources 102 and to search the user's personal images, as well as other people's images to which the user has been given permission or that were made public by the poster. While a desktop computer is shown, essentially any computing device with memory, processing, and display technologies may be used to depict the GUI 108 and post the images, such as new image 112 .
  • the user's client device 106 is coupled to communicate with the cloud resources 102 via one or more network(s) 114 .
  • the network(s) 114 are representative of generally any type of wireless or wired networks including, as non-limiting examples, an intranet, a home network, the Internet, cable networks, cellular networks, radio networks, near-field networks, a LAN, WAN, VPN, Wi-Fi, and so on. Protocols and components for communicating via such networks are well known and will not be discussed herein in detail.
  • the cloud resources 102 include processing, storage, and networking technologies. As shown in FIG. 1 , the resources are generally arranged to include frontend resources that interface with the client devices and backend resources that perform various functions such as data aggregation, content storage, analysis, and searching.
  • the frontend resources include UI and upload servers 120 and a content delivery network (CDN) 122 .
  • the backend resources include content storage 124 . While the figures may imply that the frontend and backend resources are co-located in a single location, it is to be appreciated that these various resources may be distributed across different locations.
  • the resources within the logical groups, such as the CDN 122 may be distributed across multiple datacenters at different locations.
  • the UI and upload servers 120 include one or more servers 126 that are configured with code to serve the GUI 108 when the user visits the site.
  • the servers 120 further facilitate ingestion of images or other content items that the user desires to store in the content storage 124 .
  • the servers 126 may be implemented as a single server, a cluster of servers, a server farm or datacenter with racks of server blades, virtual servers, and so forth, although other computer architectures (e.g., a mainframe architecture) may also be used. Further, the described functionality may be provided by the servers of a single entity or enterprise, or may be provided by the servers and/or services of multiple entities or enterprises.
  • a full resolution image may be a digital color image that is capable of rendering at a resolution of 1024 ⁇ 768 pixels (i.e., a width of 1024 pixels and a height of 768 pixels). This image resolution may equate to a size of approximately 1 MB of data.
  • various image formats may be used, such as JPG, GIF, PNG, and so forth.
  • the servers 126 send the image to the content storage 124 at the backend of the cloud resources 102 .
  • the content storage 124 includes one or more servers 128 that are configured to store images or other content items in persistent storage or datastores, as represented by a datastore 130 .
  • a single copy of the image 112 is shown stored in the datastore 130 .
  • the servers 128 may be implemented in any number of ways, including as database servers, file servers, and so on.
  • the servers include components such as processors (e.g., central processing units or CPUs) and computer-readable media. Each processor may itself comprise one or more processors or cores.
  • the computer-readable media may be an example of non-transitory computer storage media and may include volatile and nonvolatile memory and/or removable and non-removable media implemented in any type of technology for storage of information such as computer-readable instructions, data structures, program modules or other data.
  • Such computer-readable media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other computer-readable media technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, solid state storage, magnetic disk storage, RAID storage systems, storage arrays, network attached storage, storage area networks, cloud storage, or any other medium that can be used to store content items and which can be accessed by the processors directly or through another computing device.
  • the computer-readable media may be computer-readable media able to maintain instructions, modules, or components executable by the processor, as well as the content items such as image 112 .
  • the content storage 124 may further include compression modules 132 that execute on the server processors to compress the content items prior to storage.
  • the compression modules 132 may use any forms of compression algorithms, depending in part upon the content type being compressed.
  • the compression format may include JPEG, GIF, JNP, etc. Accordingly, the image 112 may be stored in its full size (e.g., 1 MB) or compressed to a smaller file size (e.g., ⁇ 1 MB) without loss of resolution quality when decompressed for serving.
  • the content storage 124 may also implement a marker module 134 that executes on the server processors to mark certain features or locations of the images or other content items. For instance, in video items, restart markers or key frames may be used to identify sets of multiple frames. Markers may also be used for JPEG images. These markers identify various boundaries in the image that allow the image to be segmented. These markers may be used for a compressed or non-compressed image so that image segments may be processed without first being decoded or decompressed. In this manner, segments of the images may be processed in parallel by GPUs during delivery to improve responsiveness (i.e., decrease latency), as will be described below in more detail.
  • a marker module 134 that executes on the server processors to mark certain features or locations of the images or other content items. For instance, in video items, restart markers or key frames may be used to identify sets of multiple frames. Markers may also be used for JPEG images. These markers identify various boundaries in the image that allow the image to be segmented. These markers may be used for a compressed or
  • modules for processing images or other content items may be stored and executed at the content storage 124 .
  • the content delivery network 122 includes one or more servers 140 to receive requests from users for various content items stored in the content storage 124 and deliver those requested content items to the users.
  • the servers 140 generally include processors and storage media to store and execute various modules, data, information, and instructions.
  • the servers 140 may be arranged in any number of ways, including as a single server, a cluster of servers, a server farm or data center with racks of server blades, virtual servers, and so forth, although other computer architectures (e.g., a mainframe architecture) may also be used.
  • the servers 140 are equipped with many graphic processing units (GPUs) 142 .
  • GPUs 142 may be any type of specialty processors designed to process image data at a much faster rate than traditional CPUs or other types of processors.
  • the servers 140 may or may not include CPUs, but are specially configured to process the images and other content items using the GPUs.
  • the GPUs 142 may be used to rescale the images, such as image 112 , into any number of resolutions or sizes. Due to the processing speeds, the GPUs 142 are able to rescale the images in real time, in response to user requests for delivery of the images.
  • One example type of GPU is any of the GPUs available from NVIDIA Corporation.
  • GPU is being used herein to describe a special function processing unit, other arrangements of massively parallel server cores configured to specifically process visual content items rapidly may be used for the purposes defined herein as graphic processing units.
  • the content delivery network 122 may further include a device type identifier 144 to discern the types of clients making requests. Identifying the types of clients helps to ascertain what type of display capabilities and formats are supported by the client devices when rendering the content items. For instance, a smartphone has different size and format constraints for rendering a digital image than a tablet or desktop computer. Furthermore, in some situations, different resolution images may be rendered on the same display but within different size screen areas. For instance, in a social networking or e-commerce context, a small image (e.g., a thumbnail) may be rendered initially in a small location on one screen, and then upon selection of the small image, a larger version of that image may be rendered in a larger display area.
  • a small image e.g., a thumbnail
  • the content delivery network 122 may also maintain a short-term cache 146 to temporarily store content items for delivery to requesting users.
  • the cache 146 may be formed of any type of memory or storage media, such as RAM, flash memory, or other computer-readable media technology.
  • a population of multiple users 150 may use any number of client devices 152 to request content from the cloud resources 102 .
  • the users 150 are representative of the people who use or access the site supported by the cloud resources 102 .
  • the users 150 may represent consumers, friends, family members, sellers, buyers, hobbyists, and so forth.
  • the users' population 150 may further include the original posting user 104 .
  • Each of these users 150 may access one or more content items stored on the backend content storage 124 .
  • each of the users 150 may request access to the image 112 posted by the user 104 .
  • the users 150 may be from the general population, if no restrictions are placed on who can access the image 112 , or part of a select group within a network defined by the posting user 104 or other content managers.
  • the devices 152 used by the users 150 may be of any type or profile of electronic devices that can be used to consume content items. These devices 152 generally include processing and memory resources, but are also equipped with (or able to access) a display for rending the content items. Any type of display technologies may be employed, such as liquid crystal display, plasma display, light emitting diode display, organic light emitting diode display, and so forth.
  • Representative client devices shown in FIG. 1 include a desktop computer 152 - 1 , a tablet 152 - 2 , a television or large display 152 - 3 , a personal digital assistant 152 - 4 , a laptop 152 - 5 , and a smart phone or other communication device 152 - 6 . Each of these devices 150 has different display capabilities, including various size constraints, processing capabilities, resolution levels, and so forth.
  • the users 150 utilize the various devices 152 to access the cloud resources 102 via one or more networks 154 .
  • the network(s) 154 may be one or more types of wired and wireless networks, including cellular, cable, Wi-Fi, LAN, WAN, Internet, and so forth.
  • the devices 152 may be equipped with one or more communication interfaces that support both wired and wireless connection to the networks 154 , such as cellular, radio, Wi-Fi, short-range or near-field networks (e.g., Bluetooth®), infrared, and so forth.
  • a first user e.g., user 150 - 1
  • a request for the image 112 may be spawned by the user merely visiting the site and the desired image 112 is automatically served to the device 152 - 1 as part of a page of content. In other situations, the request may be explicit from the user who identifies and selects the image.
  • the image 112 is posted to a collections or photo-sharing site and by accessing this site, the user 150 - 1 initially sees a small version of this image associated with content from the posting user 104 . After viewing this initial page, suppose that the user selects the image to see it in a larger form. Both accessing the site and user selection may be interpreted by the site as a request for versions of the image 112 maintained in the backend content storage 124 .
  • the content delivery network 122 fetches or otherwise retrieves the image 112 from the persistent datastore 130 of the content storage 124 .
  • the CDN 122 may temporarily store the image 112 in the short-term cache 146 .
  • the device type identifier 144 attempts to discern the type of client device making the request.
  • the client request may include metadata that informs the CDN 122 of the display capabilities or the size of the image it is requesting.
  • the request may include metadata indicating the type of client device. In this latter case, the device type identifier 144 uses the metadata to look up the device's display capabilities to understand what types of software, hardware, and/or display technologies are present to render the image.
  • the display capabilities might include hardware capabilities (e.g., whether the display has sufficient pixel density to render high resolution images), software capabilities imposed by the operating system or application (e.g., size of the window or space allocated to display the image), or a combination of hardware and software capabilities. Identifying the device type and retrieving the image 112 may be done in parallel to save time.
  • the GPUs 142 of the CDN 122 rescale the image 112 from its full resolution as stored in the datastore 130 to one or more versions that are different than the original resolution of the image. This resealing is performed in real-time with minimal added latency as part of the process of delivering the image to the requesting user.
  • the GPUs 142 may rescale the image 112 to a small version of the image (e.g., 100 ⁇ 76 or 3 kB) that appears as a thumbnail image in association with the posting user.
  • a new request is submitted to the CDN 122 and the GPUs 142 either serve the full original image 112 or rescale it to a larger version of the image (e.g., 640 ⁇ 480 or 50 kB) for rendering on the larger desktop display. This is represented by the rendering of the full version or larger version of the image 112 (L) on the display screen of the computer 152 - 1 .
  • the GPUs may oversize or scale up the image from its original resolution.
  • the device type identifier 144 may recognize that the request is from a mobile device (e.g., received as part of a cellular communication format, etc.) and hence, the GPUs 142 rescale the image to a medium version of the image (e.g., 512 ⁇ 384 or 20 kB) that is capable of being displayed on the mobile device. This is represented by the rendering of the medium version of the image 112 (M) on the display screen of the computer 152 - 1 .
  • M medium version of the image 112
  • the GPUs 142 are configured to process the images at the edge or frontend of the cloud services during fulfillment of a client request. Due to the high processing speeds tailored for visual images, the GPUs 142 are able to perform the rescaling in real-time without noticeable degradation in the user experience. As a result, only one copy of the image is maintained in the content storage (apart from perhaps usual redundancy measures where images may be redundantly maintained in separate systems or locations), thereby saving storage costs.
  • a temporary copy of the full resolution image may be maintained for a brief time in the short-term cache 146 .
  • the CDN 122 can immediately rescale the images on the fly without making another fetch to the backend storage 124 . This further decreases latency, thereby improving user experience.
  • the client device can request essentially any size or resolution desired, and the GPUs 142 can resize the image to satisfy the request.
  • FIG. 2 shows select components in the content delivery network 122 and a corresponding illustration to represent how a content item, such as an image, is scaled at the time of delivery.
  • the servers 140 of the CDN 122 include multiple CPUs 202 , computer-readable media 204 , multiple GPUs 142 , and one or more communication interfaces 206 .
  • the CPUs 202 may include multiple computing units or multiple cores.
  • the CPUs 202 are configured to fetch and execute computer-readable instructions stored in the computer-readable media 204 or other computer-readable media, such as a coder/decoder (codec) module 208 and an image segmenting module 210 .
  • codec coder/decoder
  • the computer-readable media 204 may include volatile and nonvolatile memory and/or removable and non-removable media implemented in any type of technology for storage of information, such as computer-readable instructions, data structures, program modules or other data.
  • Such computer-readable media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, solid state storage, magnetic disk storage, RAID storage systems, storage arrays, network attached storage, storage area networks, cloud storage, or any other medium that can be used to store the desired information and that can be accessed by a computing device.
  • the computer-readable media 204 may be a type of computer-readable storage media and may be a non-transitory storage media.
  • the computer-readable media 204 may be used to store any number of functional components that are executable by the CPUs 202 .
  • these functional components comprise instructions or programs that are executable by the CPUs 202 and that, when executed, implement operational logic for performing the actions attributed to the CDN 122 .
  • the communication interface(s) 206 may include one or more interfaces and hardware components for enabling communication with various client devices 152 and/or backend computing devices, such as the content storage servers 128 .
  • communication interface(s) 206 may facilitate communication through one or more of the Internet, cable networks, cellular networks, wireless networks (e.g., Wi-Fi, cellular) and wired networks.
  • the GPUs 142 may be implemented by multiple specially designed processors for handling large calculations involved in rending or transforming images.
  • the GPUs 142 may be multiple computing units or multiple cores, and may be configured to run in parallel with one another to improve throughput speeds.
  • Various instructions, methods, and techniques described herein may be considered in the general context of computer-executable instructions, such as program modules stored on computer storage media and executed by the processors herein.
  • program modules include routines, programs, objects, components, data structures, etc., for performing particular tasks or implementing particular abstract data types.
  • These program modules, and the like may be executed as native code or may be downloaded and executed, such as in a virtual machine or other just-in-time compilation execution environment.
  • the functionality of the program modules may be combined or distributed as desired in various implementations.
  • An implementation of these modules and techniques may be stored on computer storage media or transmitted across some form of communication media.
  • Illustrated to the right of the CDN components is a process flow diagram that shows how the CDN 122 can rapidly process an image (or other content item) in real-time as part of responding to a request.
  • the image is received in a compressed format 220 from the content storage 124 .
  • the compressed image may be in any suitable format, such as JPG, GIF, PNG, and so on.
  • the codec module 208 decompresses the received compressed image to restore a full resolution image 222 .
  • the codec module 208 may be implemented in software, hardware, and/or firmware.
  • the codec module 208 may be software executed by the CPUs 202 . In this manner, only one copy of a full resolution image is maintained in a compressed format by the content storage 124 .
  • the image segmenting module 210 is then used to segment the image into multiple image segments, as represented by the four image segments 222 (A), 222 (B), 222 (C), and 222 (D). Each of these image segments 222 (A)-(D) is provided in parallel to GPUs 142 ( 1 )-( 4 ), respectively.
  • the GPUs 142 ( 1 )-( 4 ) are downsizing the image to a smaller resolution, as represented by the smaller image segments 224 (A), 224 (B), 224 (C), and 224 (D).
  • the smaller image segments 224 (A)-(D) are put back together to form a resealed image 226 , which can then be delivered to the client device.
  • the GPUs 142 may put the image segments back together and the CPUs 202 may manage delivery of the resealed image 226 to the client devices.
  • FIG. 3 shows select components in the content delivery network 122 additional select components in the content delivery network similar to FIG. 2 , but further illustrates use of boundary markers to segment the image.
  • the image 222 is stored in full resolution in the content storage 124 and it may or may not be maintained in a compressed format.
  • Boundary markers 302 are added to the full resolution image 222 or the compressed image 220 to allow segmentation of the image for parallel processing by the GPUs 142 ( 1 )-( 4 ).
  • the marker module 134 of the content storage 124 adds the markers during ingestion of the images prior to storage in the datastore 130 .
  • the CDN 122 implements a marker reader module 304 to locate the markers and pass it to the image segmentation module 210 for use in segmenting the image regardless of whether it is compressed or uncompressed.
  • the image does not need to be decoded prior to processing by the GPUs 142 . Rather, the image segments of the compressed image may be processed in parallel by the GPUs 142 .
  • FIGS. 4 and 5 show an example process 400 executed by various devices in the system 100 to store a single version of a content item, such as an image, and scale the content item at the time of delivery.
  • the process is illustrated as a collection of blocks in logical flow diagrams, which represent a sequence of operations, some or all of which can be implemented in hardware, software or a combination thereof.
  • the blocks represent computer-executable instructions stored on one or more computer-readable media that, when executed by one or more processors, perform the recited operations.
  • computer-executable instructions include routines, programs, objects, components, data structures and the like that perform particular functions or implement particular abstract data types. The order in which the operations are described should not be construed as a limitation.
  • a new image is posted for cloud-based storage.
  • the user 104 uses a user interface 108 to select and post an image via the computer 106 .
  • the image is transferred from the computer 106 over the network 114 to the cloud resources 102 .
  • the upload servers 120 receive the image and move it to the backend content storage 124 .
  • the content storage 124 of the cloud resources 102 stores a single copy of the image, in full resolution, within persistent storage. With reference to FIG. 1 , this may be accomplished by storing the full resolution image 112 in the datastore 130 .
  • the image may be compressed prior to storage. These may be accomplished, for example, by the compression module 132 using any number of known compression algorithms.
  • the boundary markers may be added to the image prior to storage. For instance, markers may be added to define possible segmentations of the image for parallel processing. The marker module 134 executing on the backend servers 128 may be used to place these markers during ingestion of the image.
  • a request for the image is received from a user (e.g., user 1 ) via a client device (e.g., client device 1 ).
  • the request is transmitted over the network 154 to the content delivery network 122 .
  • the request is received at the cloud resources 102 , and namely the CDN 122 .
  • the display capabilities of the client device are ascertained. There are multiple ways to discern the display capabilities.
  • the request may include metadata describing the display capabilities or defining the size of the image need to fill an area of the screen.
  • a device type identifier module 144 may be employed to ascertain the display capabilities of the client device by retrieving the display capabilities based on an identifier of the client device or any other clues that may be present in the request.
  • the full resolution image is retrieved from the persistent storage.
  • the image may be in a compressed or uncompressed format.
  • the image may be cached in a short-term cache.
  • the cache 146 is local to the CDN 122 and separate from the persistent storage, such as datastore 130 . In this manner, subsequent requests for the image may be handled judiciously without fetching the image again from the backend content storage 124 .
  • the cached image may be subsequently terminated or deleted according to any type of protocols, such as time-based protocols, usage-based protocols, and so forth.
  • the image is resealed using one or more graphic processing units to form a resealed image at a resolution different from the full resolution, assuming the display capabilities do not support the image in the full resolution.
  • the display capabilities include both hardware capabilities (e.g., whether the display has sufficient pixel density to support high resolution images), software capabilities (e.g., size of the window or space allocated to display the image, such as a thumbnail, or larger location), or a combination of hardware and software capabilities.
  • the resealing may include segmenting the image into multiple segments and processing the multiple segments in parallel with multiple GPUs.
  • the resealing may also include decompressing the image if the image was retrieved in a compressed format.
  • the GPUs may perform other image processing tasks.
  • the GPUs may perform such tasks as cropping, adding boarders, modifying backgrounds, altering color, and so forth.
  • the resealed image is served back to the requesting device.
  • the resealed image is received and rendered on the requesting client device.
  • FIG. 5 continues the process 400 for subsequent requests of the image, which is being temporarily stored in the cache.
  • a request for the image is received from another user (e.g., user 2) via a different or second client device (e.g., client device 2).
  • the request is transmitted over the network 154 to the content delivery network 122 .
  • the request is received at the cloud resources 102 , and namely the CDN 122 .
  • the display capabilities of the second client device are ascertained.
  • the full resolution image is retrieved from the local cache at the CDN 122 , rather than fetching the image from the backend content storage 124 . In this way, the time to retrieve the image is reduced.
  • the image is resealed using one or more GPUs to form yet another resealed image that might be at a resolution different from the full resolution or the first resolution served to the first client device.
  • the resealed image is served back to the requesting device.
  • the resealed image is received and rendered on the requesting client device.
  • the process 400 in FIGS. 4 and 5 allows for a single copy of an image to be stored in a persistent datastore of the backend content storage, rather than dozens of copies at different resolutions.
  • the process 400 Upon receiving a request for the image, the process 400 allows for resizing of the images on the fly using high-powered GPUs at the edge of the cloud resources. Subsequent requests for the same image may then be resized on the fly using the GPUs without even having to fetch the image from the datastore. This allows for reduced storage costs, while avoiding any notable increase in latency and in some cases reducing latency.
  • the image is stored once and resized in real-time by GPUs near the edge of the cloud services 102 .
  • the bandwidth within the cloud network (not shown) between the frontend servers and backend servers is typically very high relative to the bandwidth of the distribution network 154 between the cloud resources and the client device.
  • the real-time image processing is performed as close to the edge as possible, such as in the CDN 122 .
  • the image processing may be pushed closer to the end user.
  • the image is resealed after it is delivered to the client side over the network 154 , such as by the client itself or a more proximal/local computing device that is equipped with GPUs.
  • FIG. 6 shows another example architecture of a computing system 600 that includes cloud-based storage and computing resources 602 that receive content from, and serve content to, client devices of various users.
  • the cloud resources 602 are similar to the cloud resources 102 of FIG. 1 , with the exception that the content delivery network 604 implements servers 606 that are not specially modified with many GPUs. Instead, the CDN 604 retrieves the full resolution image 112 from the backend content storage 124 and serves the full resolution image 112 over the network 154 to one or more local resources.
  • the client device 608 may be equipped with its own GPU 610 that rescales the image in real-time as the image is received.
  • a local area computing device 612 e.g., cable box, home-based server, entertainment device, etc.
  • a GPU 614 may be equipped with a GPU 614 to rescale the image as appropriate for a local display. Once resealed, the computing device 612 may transfer the rescaled image to the client device 608 via a wireless or wired connection.
  • FIG. 7 shows an example process 700 executed by various devices in the system 600 to store a single version of a content item, such as an image, and scale the content item after delivery to the customer.
  • a request for the image is submitted by the user's device, such as the tablet 608 .
  • the request may be transmitted over the network 154 to the CDN 604 , which either fetches the full resolution image from the datastore 130 or from the local cache 146 if previously cached.
  • the request is received at the cloud resources, namely the CDN 604 .
  • the CDN 604 retrieves the full resolution image either from the persistent storage 130 or from the local cache 146 , at 706 .
  • the full resolution image is served to over the distribution network 154 to the client side.
  • the full resolution image is received by either the client device 608 or a client-side computing device 612 .
  • Either or both of these devices are equipped with a GPU, such as GPUs 610 and 614 .
  • the client-side GPU rescales the image to fit the display space available for displaying the image. The rescaled image is then presented on the display, at 714 .
  • the process 700 in FIG. 7 allows for a single copy of an image to be stored in a persistent datastore of the backend content storage, rather than dozens of copies at different resolutions.
  • the process 700 transfers the full resolution image over the network to the client-side, where the image is subsequently resized using high-powered GPUs on the client side. This process allows for reduced storage costs, while avoiding any notable increase in latency.

Abstract

A system includes cloud-based resources having backend storage for maintaining single copies of display content items, such as images, and a frontend content delivery network (CDN) to dynamically format and deliver the content items in response to client requests. In the case of digital images, for example, a single copy of full resolution version of the image is stored in the backend storage, rather than dozens of versions with different resolutions. The frontend CDN is configured with multiple graphic processing units (GPUs) configured to rescale the full resolution image in real-time at the time of delivery to the client device. By resealing images on the fly at the edge of the cloud-based resources, the system reduces storage costs while minimizing any negative impact on latency.

Description

    BACKGROUND
  • With the explosion of inexpensive storage and ever increasing network bandwidth, there has been rapid growth of cloud-based storage for various digital content items (e.g., text, audio, images, and video items). Following storage, these content items may be downloaded or streamed from the cloud-based computing services to cone or more client devices. Many sites exist today allow users to post or otherwise store their own content in cloud-based storage for either private or public consumption. For instance, sites like Flickr®, Facebook®, Pinterest®, Dropbox®, YouTube®, and others allow users to post content in the form of text, images, audio, and video for others to view.
  • Conventional cloud-based architectures typically involve logical arrangements of large numbers of servers to perform various functions. One common arrangement involves client-facing servers that receive requests from client devices, process those requests to discern what content the user is seeking, and then ultimately deliver the requested content to the client devices. A logical grouping of servers that deliver content to clients is often referred to as a content delivery network or CDN. The common arrangement further includes backend servers that perform various functions such as data aggregation, storage, analysis, and searching. Typically, the client-facing or frontend servers communicate with the backend servers as part of the process for serving content to a user.
  • Over the years, the primary focus of cloud-based architectures has been improving speed and quality to the clients. For sites that permit storage of content, site operators continually weigh customer experience (e.g., latency from the time a request for a content item is received to delivery of the content item to the user) against storage costs and/or bandwidth requirements. The problem is complicated by the number of devices currently available to consume the content items because the various devices have different processing, interface, and display capabilities. For example, an image or video clip may be presented on any number of devices, including on a smart phone, tablet, laptop, desktop computer, or television. Each of these devices may require different formats of the image or video clip.
  • To illustrate these challenges facing content site operators in more detail, consider a scenario of an example site that allows users to post images. Suppose a user posts a full resolution image (e.g., 1024×768 or 1 MB) to the site. Today, it is common for site operators to process this full resolution image and create multiple versions of this image that can be served to different client devices. For instance, an intake server may use its central processing units (CPUs) to create multiple versions, such as a smaller version of the image (e.g., 100×76 or 3 kB), a medium version of the image (e.g., 512×384 or 20 kB), and a bigger version of the image (e.g., 640×480 or 50 kB). All of these multiple versions, along with the original image, are stored in content storage for subsequent retrieval and distribution. In some cases, it is not uncommon for site operators to re-render dozens of image versions having different sizes, resolutions, or other features for delivery to myriad client devices.
  • When the content delivery network receives a request for the image, it determines the display requirements of the client device and initiates a fetch to retrieve the appropriate version of the image. Suppose, in our example, that the user requests the image from her smartphone. The CDN may fetch the small version of the image from the backend content storage. This small version is ultimately served to the client device. Now, suppose the user (or another user) requests the image from a browser in her desktop computer. In this case, the CDN may fetch the bigger version or the full resolution version of the image from the backend content storage. The CDN then serves this larger version of the image to the client device.
  • With the current architectures, creating and storing multiple versions of the image in the backend storage results in higher operation costs in terms of heightened processing resources and increased storage requirements. Further, each request for a different image version requires a fetch operation that may affect customer experience through increased latency. In some situations, the fetched images may be temporarily cached at the CDN to accommodate future requests for the same image version. Unfortunately, this exacerbates the storage inefficiencies as these multiple versions are maintained at the edge of the cloud in addition to the full set of image versions being maintained at the backend content storage.
  • Accordingly, there remains a continuing need for improved architectures that reduce operating costs while improving customer experience.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The detailed description is set forth with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different figures indicates similar or identical items or features.
  • FIG. 1 illustrates an example image delivery architecture in which only a single copy of a content item, such as an image, is maintained and any new version of the content item is produced at the time of delivery.
  • FIG. 2 is a block diagram showing select components in a content delivery network used in the image delivery architecture of FIG. 1. FIG. 2 further illustrates how the content item is scaled at the time of delivery.
  • FIG. 3 is a block diagram showing additional select components in the content delivery network similar to FIG. 2, but further illustrating use of boundary markers to segment the content item for parallel processing during content transformation.
  • FIGS. 4 and 5 show a flow diagram illustrating an example process executed by various devices in the architecture to store a single version of a content item and transform the content item at the time of delivery to different client devices.
  • FIG. 6 illustrates another example image delivery architecture in which only a single copy of a content item is maintained and versions of the content item are scaled by the client device after delivery.
  • FIG. 7 is a flow diagram illustrating an example process executed by various devices in the architecture of FIG. 6 to store a single version of a content item and transform the content item after delivery to the customer.
  • DETAILED DESCRIPTION
  • This disclosure describes architectures and techniques for storing content items in cloud-based storage and delivering the content items from the cloud-based storage to client devices in response to requests from users. Unlike conventional arrangements where multiple copies of a content item, such as an image, are maintained in the cloud-based storage and then individually fetched based on the display capabilities of the client, the architecture described herein may store as little as just a single copy of the content item. In particular, in the case of digital images, a full resolution version of the image is stored in the cloud-based storage. More generally, the architecture significantly reduces the number of copies of the content item (e.g., 1, 2 or a few) to be stored in comparison to conventional architectures that stored a full set of possible rendered versions (e.g., on a scale of dozens of copies in various formats and sizes).
  • The frontend content delivery network (CDN) is configured with servers that are equipped with one or more graphic processing units (GPUs). A GPU is a specialty electronic circuit designed to rapidly manipulate and accelerate the creation of visual images for output to a display. When a user requests the image, the CDN determines the display capabilities of the requesting device either from data received with the request or through independent processes. The CDN retrieves the image from the cloud-based storage and uses the GPUs to rescale the image in real-time at the time of delivery to the client device.
  • The following example architectures are described in the context of delivering digital images. However, aspects of the systems and techniques described herein may be applied to other content items, such as audio and video. Furthermore, while this architecture is described in the context of cloud-based storage, aspects of the systems and techniques described herein may be applied to other forms of storage, such as storage area networks (SAN), RAID systems, or hard drives.
  • Example System Architecture
  • FIG. 1 illustrates an example architecture of a computing system 100 that includes cloud-based storage and computing resources 102 to receive content from, and serve content to, client devices associated with various users. As one non-limiting example, the cloud resources 102 may be representative of various sites on the web that allow users to store content and subsequently share or retrieve that content using any number of devices. Examples of such sites might include entertainment sites, organization or collection sites, photo sites, social network sites, e-commerce sites, advertising sites, or the like.
  • In this illustration, a first user 104 uses a first client device 106, such as a desktop computer, to post content items for storage in the cloud resources 102. Depending upon the implementation, the content items may include any type of media, such as text, audio, images, and video. The content items may take the form of textual posts, digital photographs, songs, movies, and so forth. In this particular example, the user 104 is on a site that allows the user to post digital images. In other scenarios, the content items stored in the cloud resources 102 may be placed there through other techniques than a user uploading the items. For instance, the cloud resources 102 may communicate with other resources (e.g., such as other websites or storage locations) to retrieve and store the content items.
  • A graphical user interface (GUI) 108 is depicted on the display of the client device 106. The GUI 108 may be rendered based on instructions provided by the site to the computer's browser. The GUI 108 includes multiple post areas 110, each of which has an associated image or collection of images. As shown here, ten images are shown posted, including images I1-I9 and a new image 112 of a person's portrait, as represented by the smiley face symbol. The GUI 108 allows the user to upload the digital images for storage in the cloud resources 102 and to search the user's personal images, as well as other people's images to which the user has been given permission or that were made public by the poster. While a desktop computer is shown, essentially any computing device with memory, processing, and display technologies may be used to depict the GUI 108 and post the images, such as new image 112.
  • The user's client device 106 is coupled to communicate with the cloud resources 102 via one or more network(s) 114. The network(s) 114 are representative of generally any type of wireless or wired networks including, as non-limiting examples, an intranet, a home network, the Internet, cable networks, cellular networks, radio networks, near-field networks, a LAN, WAN, VPN, Wi-Fi, and so on. Protocols and components for communicating via such networks are well known and will not be discussed herein in detail.
  • The cloud resources 102 include processing, storage, and networking technologies. As shown in FIG. 1, the resources are generally arranged to include frontend resources that interface with the client devices and backend resources that perform various functions such as data aggregation, content storage, analysis, and searching. The frontend resources include UI and upload servers 120 and a content delivery network (CDN) 122. The backend resources include content storage 124. While the figures may imply that the frontend and backend resources are co-located in a single location, it is to be appreciated that these various resources may be distributed across different locations. Moreover, the resources within the logical groups, such as the CDN 122, may be distributed across multiple datacenters at different locations.
  • The UI and upload servers 120 include one or more servers 126 that are configured with code to serve the GUI 108 when the user visits the site. The servers 120 further facilitate ingestion of images or other content items that the user desires to store in the content storage 124. The servers 126 may be implemented as a single server, a cluster of servers, a server farm or datacenter with racks of server blades, virtual servers, and so forth, although other computer architectures (e.g., a mainframe architecture) may also be used. Further, the described functionality may be provided by the servers of a single entity or enterprise, or may be provided by the servers and/or services of multiple entities or enterprises.
  • For purposes of continuing discussion, suppose the user 104 decides to post a new image 112 through the GUI 108 to be uploaded and stored on the cloud-based storage. The user 104 may employ various techniques to identify the new image 112 and initiate the process to transfer that image from the client device 106 over the networks 114 to the upload servers 126 at the frontend of the cloud resources 102. In one implementation, the user 104 selects a full resolution version of the image. In one example format today, a full resolution image may be a digital color image that is capable of rendering at a resolution of 1024×768 pixels (i.e., a width of 1024 pixels and a height of 768 pixels). This image resolution may equate to a size of approximately 1 MB of data. Furthermore, various image formats may be used, such as JPG, GIF, PNG, and so forth. The servers 126 send the image to the content storage 124 at the backend of the cloud resources 102.
  • The content storage 124 includes one or more servers 128 that are configured to store images or other content items in persistent storage or datastores, as represented by a datastore 130. A single copy of the image 112 is shown stored in the datastore 130. The servers 128 may be implemented in any number of ways, including as database servers, file servers, and so on. In a very basic configuration, the servers include components such as processors (e.g., central processing units or CPUs) and computer-readable media. Each processor may itself comprise one or more processors or cores. The computer-readable media may be an example of non-transitory computer storage media and may include volatile and nonvolatile memory and/or removable and non-removable media implemented in any type of technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Such computer-readable media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other computer-readable media technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, solid state storage, magnetic disk storage, RAID storage systems, storage arrays, network attached storage, storage area networks, cloud storage, or any other medium that can be used to store content items and which can be accessed by the processors directly or through another computing device. Accordingly, the computer-readable media may be computer-readable media able to maintain instructions, modules, or components executable by the processor, as well as the content items such as image 112.
  • It is important to note that as little as one copy or version of the image 112 can be stored. In the architecture 100, there is no need for additional versions of various sizes/resolutions to be stored in the content storage 124. Accordingly, unlike conventional architectures where dozens of versions of the same image may be stored, maintaining as little as a single copy or version of the image 112 provides significant savings in processing and storage costs. More generally, processing and storage cost savings may be realized when the number of versions stored is less than the total number of possible versions suitable for presentation on a full array of electronic devices.
  • In some implementations, the content storage 124 may further include compression modules 132 that execute on the server processors to compress the content items prior to storage. The compression modules 132 may use any forms of compression algorithms, depending in part upon the content type being compressed. For images, the compression format may include JPEG, GIF, JNP, etc. Accordingly, the image 112 may be stored in its full size (e.g., 1 MB) or compressed to a smaller file size (e.g., <1 MB) without loss of resolution quality when decompressed for serving.
  • In some implementations, the content storage 124 may also implement a marker module 134 that executes on the server processors to mark certain features or locations of the images or other content items. For instance, in video items, restart markers or key frames may be used to identify sets of multiple frames. Markers may also be used for JPEG images. These markers identify various boundaries in the image that allow the image to be segmented. These markers may be used for a compressed or non-compressed image so that image segments may be processed without first being decoded or decompressed. In this manner, segments of the images may be processed in parallel by GPUs during delivery to improve responsiveness (i.e., decrease latency), as will be described below in more detail.
  • While not shown, it is noted that other types of modules for processing images or other content items may be stored and executed at the content storage 124.
  • The content delivery network 122 includes one or more servers 140 to receive requests from users for various content items stored in the content storage 124 and deliver those requested content items to the users. The servers 140 generally include processors and storage media to store and execute various modules, data, information, and instructions. The servers 140 may be arranged in any number of ways, including as a single server, a cluster of servers, a server farm or data center with racks of server blades, virtual servers, and so forth, although other computer architectures (e.g., a mainframe architecture) may also be used.
  • Of particular note, the servers 140 are equipped with many graphic processing units (GPUs) 142. These GPUs 142 may be any type of specialty processors designed to process image data at a much faster rate than traditional CPUs or other types of processors. The servers 140 may or may not include CPUs, but are specially configured to process the images and other content items using the GPUs. In various implementations, the GPUs 142 may be used to rescale the images, such as image 112, into any number of resolutions or sizes. Due to the processing speeds, the GPUs 142 are able to rescale the images in real time, in response to user requests for delivery of the images. One example type of GPU is any of the GPUs available from NVIDIA Corporation. Further, while the term GPU is being used herein to describe a special function processing unit, other arrangements of massively parallel server cores configured to specifically process visual content items rapidly may be used for the purposes defined herein as graphic processing units.
  • The content delivery network 122 may further include a device type identifier 144 to discern the types of clients making requests. Identifying the types of clients helps to ascertain what type of display capabilities and formats are supported by the client devices when rendering the content items. For instance, a smartphone has different size and format constraints for rendering a digital image than a tablet or desktop computer. Furthermore, in some situations, different resolution images may be rendered on the same display but within different size screen areas. For instance, in a social networking or e-commerce context, a small image (e.g., a thumbnail) may be rendered initially in a small location on one screen, and then upon selection of the small image, a larger version of that image may be rendered in a larger display area.
  • The content delivery network 122 may also maintain a short-term cache 146 to temporarily store content items for delivery to requesting users. The cache 146 may be formed of any type of memory or storage media, such as RAM, flash memory, or other computer-readable media technology.
  • As shown in FIG. 1, a population of multiple users 150 may use any number of client devices 152 to request content from the cloud resources 102. The users 150 are representative of the people who use or access the site supported by the cloud resources 102. Depending upon the type of site (e.g., social network, photo sharing, collections, e-commerce, etc.), the users 150 may represent consumers, friends, family members, sellers, buyers, hobbyists, and so forth. The users' population 150 may further include the original posting user 104.
  • Each of these users 150 may access one or more content items stored on the backend content storage 124. Suppose, for discussion purposes, that each of the users 150 may request access to the image 112 posted by the user 104. The users 150 may be from the general population, if no restrictions are placed on who can access the image 112, or part of a select group within a network defined by the posting user 104 or other content managers.
  • The devices 152 used by the users 150 may be of any type or profile of electronic devices that can be used to consume content items. These devices 152 generally include processing and memory resources, but are also equipped with (or able to access) a display for rending the content items. Any type of display technologies may be employed, such as liquid crystal display, plasma display, light emitting diode display, organic light emitting diode display, and so forth. Representative client devices shown in FIG. 1 include a desktop computer 152-1, a tablet 152-2, a television or large display 152-3, a personal digital assistant 152-4, a laptop 152-5, and a smart phone or other communication device 152-6. Each of these devices 150 has different display capabilities, including various size constraints, processing capabilities, resolution levels, and so forth.
  • The users 150 utilize the various devices 152 to access the cloud resources 102 via one or more networks 154. The network(s) 154 may be one or more types of wired and wireless networks, including cellular, cable, Wi-Fi, LAN, WAN, Internet, and so forth. The devices 152 may be equipped with one or more communication interfaces that support both wired and wireless connection to the networks 154, such as cellular, radio, Wi-Fi, short-range or near-field networks (e.g., Bluetooth®), infrared, and so forth.
  • For discussion purposes, suppose a first user (e.g., user 150-1) uses his desktop computer 152-1 to access the image 112 posted by the original user 104. A request for the image 112 may be spawned by the user merely visiting the site and the desired image 112 is automatically served to the device 152-1 as part of a page of content. In other situations, the request may be explicit from the user who identifies and selects the image. To illustrate, suppose the image 112 is posted to a collections or photo-sharing site and by accessing this site, the user 150-1 initially sees a small version of this image associated with content from the posting user 104. After viewing this initial page, suppose that the user selects the image to see it in a larger form. Both accessing the site and user selection may be interpreted by the site as a request for versions of the image 112 maintained in the backend content storage 124.
  • Upon receipt of such requests, the content delivery network 122 fetches or otherwise retrieves the image 112 from the persistent datastore 130 of the content storage 124. The CDN 122 may temporarily store the image 112 in the short-term cache 146. Meanwhile, the device type identifier 144 attempts to discern the type of client device making the request. In some implementations, the client request may include metadata that informs the CDN 122 of the display capabilities or the size of the image it is requesting. In other implementations, the request may include metadata indicating the type of client device. In this latter case, the device type identifier 144 uses the metadata to look up the device's display capabilities to understand what types of software, hardware, and/or display technologies are present to render the image. As used herein, the display capabilities might include hardware capabilities (e.g., whether the display has sufficient pixel density to render high resolution images), software capabilities imposed by the operating system or application (e.g., size of the window or space allocated to display the image), or a combination of hardware and software capabilities. Identifying the device type and retrieving the image 112 may be done in parallel to save time.
  • Based on the display capabilities of the requesting device, the GPUs 142 of the CDN 122 rescale the image 112 from its full resolution as stored in the datastore 130 to one or more versions that are different than the original resolution of the image. This resealing is performed in real-time with minimal added latency as part of the process of delivering the image to the requesting user. For example, in response to the desktop computer 152-1 accessing the site, the GPUs 142 may rescale the image 112 to a small version of the image (e.g., 100×76 or 3 kB) that appears as a thumbnail image in association with the posting user. When the user selects the image to view it in a larger format, a new request is submitted to the CDN 122 and the GPUs 142 either serve the full original image 112 or rescale it to a larger version of the image (e.g., 640×480 or 50 kB) for rendering on the larger desktop display. This is represented by the rendering of the full version or larger version of the image 112(L) on the display screen of the computer 152-1. In some cases, the GPUs may oversize or scale up the image from its original resolution.
  • Similarly, suppose the user 150-2 uses a smart phone 152-6 to access the image 112. In this example, the device type identifier 144 may recognize that the request is from a mobile device (e.g., received as part of a cellular communication format, etc.) and hence, the GPUs 142 rescale the image to a medium version of the image (e.g., 512×384 or 20 kB) that is capable of being displayed on the mobile device. This is represented by the rendering of the medium version of the image 112(M) on the display screen of the computer 152-1.
  • In this manner, the GPUs 142 are configured to process the images at the edge or frontend of the cloud services during fulfillment of a client request. Due to the high processing speeds tailored for visual images, the GPUs 142 are able to perform the rescaling in real-time without noticeable degradation in the user experience. As a result, only one copy of the image is maintained in the content storage (apart from perhaps usual redundancy measures where images may be redundantly maintained in separate systems or locations), thereby saving storage costs.
  • In addition, a temporary copy of the full resolution image may be maintained for a brief time in the short-term cache 146. In this way, when subsequent requests for the image are received, the CDN 122 can immediately rescale the images on the fly without making another fetch to the backend storage 124. This further decreases latency, thereby improving user experience. Indeed, the client device can request essentially any size or resolution desired, and the GPUs 142 can resize the image to satisfy the request.
  • Edge-Based Gpu Image Processing Techniques
  • FIG. 2 shows select components in the content delivery network 122 and a corresponding illustration to represent how a content item, such as an image, is scaled at the time of delivery. The servers 140 of the CDN 122 include multiple CPUs 202, computer-readable media 204, multiple GPUs 142, and one or more communication interfaces 206. The CPUs 202 may include multiple computing units or multiple cores. The CPUs 202 are configured to fetch and execute computer-readable instructions stored in the computer-readable media 204 or other computer-readable media, such as a coder/decoder (codec) module 208 and an image segmenting module 210.
  • The computer-readable media 204 may include volatile and nonvolatile memory and/or removable and non-removable media implemented in any type of technology for storage of information, such as computer-readable instructions, data structures, program modules or other data. Such computer-readable media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, solid state storage, magnetic disk storage, RAID storage systems, storage arrays, network attached storage, storage area networks, cloud storage, or any other medium that can be used to store the desired information and that can be accessed by a computing device. Depending on the configuration of the servers 140, the computer-readable media 204 may be a type of computer-readable storage media and may be a non-transitory storage media.
  • The computer-readable media 204 may be used to store any number of functional components that are executable by the CPUs 202. In many implementations, these functional components comprise instructions or programs that are executable by the CPUs 202 and that, when executed, implement operational logic for performing the actions attributed to the CDN 122. The communication interface(s) 206 may include one or more interfaces and hardware components for enabling communication with various client devices 152 and/or backend computing devices, such as the content storage servers 128. For example, communication interface(s) 206 may facilitate communication through one or more of the Internet, cable networks, cellular networks, wireless networks (e.g., Wi-Fi, cellular) and wired networks.
  • The GPUs 142 may be implemented by multiple specially designed processors for handling large calculations involved in rending or transforming images. The GPUs 142 may be multiple computing units or multiple cores, and may be configured to run in parallel with one another to improve throughput speeds.
  • Various instructions, methods, and techniques described herein may be considered in the general context of computer-executable instructions, such as program modules stored on computer storage media and executed by the processors herein. Generally, program modules include routines, programs, objects, components, data structures, etc., for performing particular tasks or implementing particular abstract data types. These program modules, and the like, may be executed as native code or may be downloaded and executed, such as in a virtual machine or other just-in-time compilation execution environment. Typically, the functionality of the program modules may be combined or distributed as desired in various implementations. An implementation of these modules and techniques may be stored on computer storage media or transmitted across some form of communication media.
  • Illustrated to the right of the CDN components is a process flow diagram that shows how the CDN 122 can rapidly process an image (or other content item) in real-time as part of responding to a request. In this example, the image is received in a compressed format 220 from the content storage 124. The compressed image may be in any suitable format, such as JPG, GIF, PNG, and so on. The codec module 208 decompresses the received compressed image to restore a full resolution image 222. The codec module 208 may be implemented in software, hardware, and/or firmware. For instance, the codec module 208 may be software executed by the CPUs 202. In this manner, only one copy of a full resolution image is maintained in a compressed format by the content storage 124.
  • The image segmenting module 210 is then used to segment the image into multiple image segments, as represented by the four image segments 222(A), 222(B), 222(C), and 222(D). Each of these image segments 222(A)-(D) is provided in parallel to GPUs 142(1)-(4), respectively. In this example, the GPUs 142(1)-(4) are downsizing the image to a smaller resolution, as represented by the smaller image segments 224(A), 224(B), 224(C), and 224(D). The smaller image segments 224(A)-(D) are put back together to form a resealed image 226, which can then be delivered to the client device. In one implementation, the GPUs 142 may put the image segments back together and the CPUs 202 may manage delivery of the resealed image 226 to the client devices.
  • The use of GPUs at the edge CDN 122 and the ability to process pieces of the image in parallel greatly increases the speed at which the resealed image can be delivered. This allows a single copy of the image to be stored in the persistent content storage 124, while rapidly serving scaled versions of the image in response to user requests.
  • FIG. 3 shows select components in the content delivery network 122 additional select components in the content delivery network similar to FIG. 2, but further illustrates use of boundary markers to segment the image. In this example, the image 222 is stored in full resolution in the content storage 124 and it may or may not be maintained in a compressed format. Boundary markers 302 are added to the full resolution image 222 or the compressed image 220 to allow segmentation of the image for parallel processing by the GPUs 142(1)-(4). The marker module 134 of the content storage 124 adds the markers during ingestion of the images prior to storage in the datastore 130. The CDN 122 implements a marker reader module 304 to locate the markers and pass it to the image segmentation module 210 for use in segmenting the image regardless of whether it is compressed or uncompressed. Through user of boundary markers in the compressed image, the image does not need to be decoded prior to processing by the GPUs 142. Rather, the image segments of the compressed image may be processed in parallel by the GPUs 142.
  • Example Processes
  • FIGS. 4 and 5 show an example process 400 executed by various devices in the system 100 to store a single version of a content item, such as an image, and scale the content item at the time of delivery. The process is illustrated as a collection of blocks in logical flow diagrams, which represent a sequence of operations, some or all of which can be implemented in hardware, software or a combination thereof. In the context of software, the blocks represent computer-executable instructions stored on one or more computer-readable media that, when executed by one or more processors, perform the recited operations. Generally, computer-executable instructions include routines, programs, objects, components, data structures and the like that perform particular functions or implement particular abstract data types. The order in which the operations are described should not be construed as a limitation. Any number of the described blocks can be combined in any order and/or in parallel to implement the process, or alternative processes, and not all of the blocks need be executed. For discussion purposes, the processes are described with reference to the architectures and environments described in the examples herein, although the processes may be implemented in a wide variety of other architectures or environments.
  • For purposes of discussion, certain acts of the processes are illustrated in columns beneath the devices or systems that perform these acts in the example implementation. For instance, acts performed by the original poster's computer 106, cloud resources 102, and other user devices 152 are shown beneath their respective images.
  • At 402, a new image is posted for cloud-based storage. In the example architecture of FIG. 1, the user 104 uses a user interface 108 to select and post an image via the computer 106. The image is transferred from the computer 106 over the network 114 to the cloud resources 102. The upload servers 120 receive the image and move it to the backend content storage 124.
  • At 404, the content storage 124 of the cloud resources 102 stores a single copy of the image, in full resolution, within persistent storage. With reference to FIG. 1, this may be accomplished by storing the full resolution image 112 in the datastore 130. Optionally, at 406, the image may be compressed prior to storage. These may be accomplished, for example, by the compression module 132 using any number of known compression algorithms. Additionally, at 408, the boundary markers may be added to the image prior to storage. For instance, markers may be added to define possible segmentations of the image for parallel processing. The marker module 134 executing on the backend servers 128 may be used to place these markers during ingestion of the image.
  • At 410, a request for the image is received from a user (e.g., user 1) via a client device (e.g., client device 1). The request is transmitted over the network 154 to the content delivery network 122. At 412, the request is received at the cloud resources 102, and namely the CDN 122.
  • At 414, the display capabilities of the client device are ascertained. There are multiple ways to discern the display capabilities. In one approach, the request may include metadata describing the display capabilities or defining the size of the image need to fill an area of the screen. In another approach, a device type identifier module 144 may be employed to ascertain the display capabilities of the client device by retrieving the display capabilities based on an identifier of the client device or any other clues that may be present in the request.
  • At 416, the full resolution image is retrieved from the persistent storage. The image may be in a compressed or uncompressed format. At 418, the image may be cached in a short-term cache. The cache 146 is local to the CDN 122 and separate from the persistent storage, such as datastore 130. In this manner, subsequent requests for the image may be handled judiciously without fetching the image again from the backend content storage 124. The cached image may be subsequently terminated or deleted according to any type of protocols, such as time-based protocols, usage-based protocols, and so forth.
  • At 420, the image is resealed using one or more graphic processing units to form a resealed image at a resolution different from the full resolution, assuming the display capabilities do not support the image in the full resolution. As used herein, the display capabilities include both hardware capabilities (e.g., whether the display has sufficient pixel density to support high resolution images), software capabilities (e.g., size of the window or space allocated to display the image, such as a thumbnail, or larger location), or a combination of hardware and software capabilities. The resealing may include segmenting the image into multiple segments and processing the multiple segments in parallel with multiple GPUs. The resealing may also include decompressing the image if the image was retrieved in a compressed format.
  • Furthermore, the GPUs may perform other image processing tasks. For instance, the GPUs may perform such tasks as cropping, adding boarders, modifying backgrounds, altering color, and so forth.
  • At 422, the resealed image is served back to the requesting device. At 424, the resealed image is received and rendered on the requesting client device.
  • FIG. 5 continues the process 400 for subsequent requests of the image, which is being temporarily stored in the cache. At 502, a request for the image is received from another user (e.g., user 2) via a different or second client device (e.g., client device 2). The request is transmitted over the network 154 to the content delivery network 122. At 504, the request is received at the cloud resources 102, and namely the CDN 122.
  • At 506, the display capabilities of the second client device are ascertained. At 508, the full resolution image is retrieved from the local cache at the CDN 122, rather than fetching the image from the backend content storage 124. In this way, the time to retrieve the image is reduced. At 510, the image is resealed using one or more GPUs to form yet another resealed image that might be at a resolution different from the full resolution or the first resolution served to the first client device.
  • At 512, the resealed image is served back to the requesting device. At 514, the resealed image is received and rendered on the requesting client device.
  • The process 400 in FIGS. 4 and 5 allows for a single copy of an image to be stored in a persistent datastore of the backend content storage, rather than dozens of copies at different resolutions. Upon receiving a request for the image, the process 400 allows for resizing of the images on the fly using high-powered GPUs at the edge of the cloud resources. Subsequent requests for the same image may then be resized on the fly using the GPUs without even having to fetch the image from the datastore. This allows for reduced storage costs, while avoiding any notable increase in latency and in some cases reducing latency.
  • Second Example System Architecture and Process
  • In the architecture described above, the image is stored once and resized in real-time by GPUs near the edge of the cloud services 102. The bandwidth within the cloud network (not shown) between the frontend servers and backend servers is typically very high relative to the bandwidth of the distribution network 154 between the cloud resources and the client device. As a result, the real-time image processing is performed as close to the edge as possible, such as in the CDN 122. However, as bandwidth improves in the distribution networks 154, the image processing may be pushed closer to the end user. Accordingly, in the architecture described below, the image is resealed after it is delivered to the client side over the network 154, such as by the client itself or a more proximal/local computing device that is equipped with GPUs.
  • FIG. 6 shows another example architecture of a computing system 600 that includes cloud-based storage and computing resources 602 that receive content from, and serve content to, client devices of various users. The cloud resources 602 are similar to the cloud resources 102 of FIG. 1, with the exception that the content delivery network 604 implements servers 606 that are not specially modified with many GPUs. Instead, the CDN 604 retrieves the full resolution image 112 from the backend content storage 124 and serves the full resolution image 112 over the network 154 to one or more local resources. In the illustrated example, the client device 608 may be equipped with its own GPU 610 that rescales the image in real-time as the image is received. Alternatively, a local area computing device 612 (e.g., cable box, home-based server, entertainment device, etc.) may be equipped with a GPU 614 to rescale the image as appropriate for a local display. Once resealed, the computing device 612 may transfer the rescaled image to the client device 608 via a wireless or wired connection.
  • FIG. 7 shows an example process 700 executed by various devices in the system 600 to store a single version of a content item, such as an image, and scale the content item after delivery to the customer. At 702, a request for the image is submitted by the user's device, such as the tablet 608. The request may be transmitted over the network 154 to the CDN 604, which either fetches the full resolution image from the datastore 130 or from the local cache 146 if previously cached.
  • At 704, the request is received at the cloud resources, namely the CDN 604. The CDN 604 retrieves the full resolution image either from the persistent storage 130 or from the local cache 146, at 706. At 708, the full resolution image is served to over the distribution network 154 to the client side.
  • At 710, the full resolution image is received by either the client device 608 or a client-side computing device 612. Either or both of these devices are equipped with a GPU, such as GPUs 610 and 614. At 712, the client-side GPU rescales the image to fit the display space available for displaying the image. The rescaled image is then presented on the display, at 714.
  • Accordingly, the process 700 in FIG. 7 allows for a single copy of an image to be stored in a persistent datastore of the backend content storage, rather than dozens of copies at different resolutions. Upon receiving a request for the image, the process 700 transfers the full resolution image over the network to the client-side, where the image is subsequently resized using high-powered GPUs on the client side. This process allows for reduced storage costs, while avoiding any notable increase in latency.
  • It is further noted that aspects pertaining to image compression and use of boundary markers may be used in the process 700 in a manner similar to that described above with respect to process 400.
  • CONCLUSION
  • Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as example forms of implementing the claims

Claims (25)

What is claimed is:
1. A method comprising:
storing a single copy of an image in a first resolution within persistent storage without storing multiple copies of the image in different resolutions in the persistent storage;
receiving, from a client device, a request for the image;
ascertaining display capabilities of the client device;
retrieving the image, in the first resolution, from the persistent storage;
rescaling the image, using one or more graphic processing units, to form a rescaled image of a second resolution different from the first resolution in an event that the display capabilities do not support rendering of the image in the first resolution; and
serving the rescaled image in the second resolution.
2. The method as recited in claim 1, wherein the first resolution of the image is full resolution and the second resolution of the rescaled image is less than full resolution.
3. The method as recited in claim 1, wherein receiving a request for the image comprises receiving a request that includes at least one of indicia of the display capabilities of the client device or a size that the image is to rendered.
4. The method as recited in claim 1, wherein receiving a request for the image comprises receiving a request that includes an identifier of the client device, and ascertaining the display capabilities of the client device comprises retrieving the display capabilities based on the identifier of the client device.
5. The method as recited in claim 1, further comprising caching the image, in the first resolution, in a short-term cache separate from the persistent storage.
6. The method as recited in claim 5, wherein the client device comprises a first client device having first display capabilities, and further comprising:
receiving, from a second client device having second display capabilities different than the first display capabilities, a request for the image;
ascertaining the second display capabilities of the second client device;
resealing the image from the short-term cache, using one or more graphic processing units, to form a resealed image of a third resolution different from the first resolution and the second resolution in an event that the second display capabilities do not support rendering of the image in the first resolution; and
serving the resealed image in the third resolution to the second client device.
7. The method as recited in claim 5, further comprising deleting the image from the short-term cache.
8. The method as recited in claim 1, wherein storing a single copy of an image comprises compressing the image and storing the image in compressed form, and the method further comprising decompressing the image following retrieval.
9. The method as recited in claim 1, further comprising segmenting the image into multiple image segments and resealing the image segments in parallel using multiple graphic processing units.
10. The method as recited in claim 1, further comprising:
adding boundary markers to the image to delineate segments of the image;
segmenting the image, using the boundary markers, into multiple image segments; and
resealing the image segments in parallel using multiple graphic processing units.
11. A method comprising:
storing a copy of an image in a first resolution within persistent storage without storing multiple copies of the image in different resolutions in the persistent storage;
receiving, from a client device, a request for the image;
retrieving the image, in the first resolution, from the persistent storage;
serving the image, in full resolution, to the client device where the client device is configured to rescale the image, using at least one graphic processing unit, to form a rescaled image of a second resolution different from the first resolution.
12. The method as recited in claim 11, wherein the first resolution of the image is full resolution and the second resolution of the rescaled image is less than full resolution.
13. The method as recited in claim 11, further comprising caching the image, in the first resolution, in a short-term cache separate from the persistent storage.
14. The method as recited in claim 13, further comprising subsequently deleting the image from the short-term cache.
15. A cloud-based computing system comprising:
persistent content storage to store displayable content items, wherein at least some of the displayable content items are stored as single copies in a first format without secondary versions of the displayable content items being stored in the same or different formats; and
a content delivery network having multiple servers to communicate with the content storage, each of the multiple servers comprising multiple graphic processing units to process the displayable content items such that, upon receipt of a request from a client device for a displayable content item, the content delivery network being configured to ascertain rendering constraints of the client device and retrieve the displayable content item, in the first format, from the content storage, the content delivery network being further configured to transform the displayable content item, using the graphic processing units, to form a transformed displayable content item of a second format different from the first format, wherein the second format is supported by the display capabilities of the client device, and the content delivery network is configured to serve the transformed displayable content item in the second format to the client device.
16. The cloud-based computing system as recited in claim 15, wherein the displayable content item comprises an image, the first format comprises full resolution, and the content delivery network is configured to rescale the image to a resolution that is different than full resolution.
17. The cloud-based computing system as recited in claim 15, wherein the displayable content item is compressed prior to storage in the content storage.
18. The cloud-based computing system as recited in claim 15, wherein the content delivery network further comprises a cache to temporarily store the displayable content item in the first format.
19. The cloud-based computing system as recited in claim 18, wherein upon receipt of a second request for the content item from a second client device different than the first client device, the content delivery network is configured to ascertain display capabilities of the second client device and retrieve the displayable content item, in the first format, from the cache, the content delivery network being further configured to transform the displayable content item retrieved from the cache, using the graphic processing units, to form a second transformed displayable content item of a third format different from the first and second formats, wherein the third format is supported by the display capabilities of the second client device, and the content delivery network is configured to serve the second transformed displayable content item in the third format to the second client device.
20. The cloud-based computing system as recited in claim 15, further comprising a computing unit configured to add boundary markers to the content item to delineate multiple segments of the content item, and wherein the content delivery network is configured to segment, using the boundary markers, the displayable content item into multiple content segments and rescale the content segments in parallel using the graphic processing units.
21. One or more computer-readable media maintaining instructions executable by one or more processors of a computing system to perform operations comprising:
storing a single copy of a displayable content item within persistent storage without storing multiple copies of the displayable content item in the persistent storage;
receiving, from a client device, a request for the displayable content item;
retrieving the displayable content item from the persistent storage;
altering the displayable content item in real-time to form a second version of the displayable content item that is in a format suitable for presentation on the client device; and
serving the second version of the displayable content item to the client device.
22. The computer-readable media as recited in claim 21, further comprising instructions executable by the one or more processors of the computing system to perform one or more additional operations comprising caching the displayable content item, in the first format, in a short-term cache separate from the persistent storage.
23. The computer-readable media as recited in claim 22, further comprising instructions executable by the one or more processors of the computing system to perform one or more additional operations comprising:
receiving, from a second client device having second display capabilities different than the first display capabilities, a request for the displayable content item;
altering the displayable content item in real-time to form a third version of the displayable content item that is in a format suitable for presentation on the second client device; and
serving the third version of the displayable content item to the second client device.
24. One or more computer-readable media maintaining instructions executable by one or more processors of a computing system to perform operations comprising:
storing a single copy of an image within persistent storage without storing multiple copies of the image in the persistent storage;
adding boundary markers to the image that define segments of the image;
receiving, from a client device, a request for the image;
retrieving the image from the persistent storage;
segmenting the image, using the boundary markers, into multiple image segments;
rescaling the image segments in parallel using multiple graphic processing units;
reforming the rescaled image segments to form a rescaled image; and
serving the rescaled image to the client device.
25. The computer-readable media as recited in claim 24, further comprising instructions executable by the one or more processors of the computing system to perform one or more additional operations comprising storing the single copy of the image in a compressed form and decompressing the image after retrieving the image from the persistent storage.
US13/929,725 2013-03-15 2013-06-27 Image Delivery Architecture Abandoned US20140267439A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US13/929,725 US20140267439A1 (en) 2013-03-15 2013-06-27 Image Delivery Architecture
PCT/US2014/044676 WO2014210514A1 (en) 2013-03-15 2014-06-27 Image delivery architecture

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361799833P 2013-03-15 2013-03-15
US201361829992P 2013-05-31 2013-05-31
US13/929,725 US20140267439A1 (en) 2013-03-15 2013-06-27 Image Delivery Architecture

Publications (1)

Publication Number Publication Date
US20140267439A1 true US20140267439A1 (en) 2014-09-18

Family

ID=51524720

Family Applications (8)

Application Number Title Priority Date Filing Date
US13/907,802 Active 2034-07-15 US9696350B2 (en) 2013-03-15 2013-05-31 Non-linear control for voltage regulator
US13/929,725 Abandoned US20140267439A1 (en) 2013-03-15 2013-06-27 Image Delivery Architecture
US13/929,727 Expired - Fee Related US9046552B2 (en) 2013-03-15 2013-06-27 On-die trim-able passive components for high volume manufacturing
US13/930,559 Active US8890737B2 (en) 2013-03-15 2013-06-28 Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator
US14/543,346 Active US9733282B2 (en) 2013-03-15 2014-11-17 Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator
US15/276,697 Active US10184961B2 (en) 2013-03-15 2016-09-26 Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator
US16/254,468 Active US10641799B2 (en) 2013-03-15 2019-01-22 Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator
US16/866,347 Active US11193961B2 (en) 2013-03-15 2020-05-04 Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US13/907,802 Active 2034-07-15 US9696350B2 (en) 2013-03-15 2013-05-31 Non-linear control for voltage regulator

Family Applications After (6)

Application Number Title Priority Date Filing Date
US13/929,727 Expired - Fee Related US9046552B2 (en) 2013-03-15 2013-06-27 On-die trim-able passive components for high volume manufacturing
US13/930,559 Active US8890737B2 (en) 2013-03-15 2013-06-28 Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator
US14/543,346 Active US9733282B2 (en) 2013-03-15 2014-11-17 Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator
US15/276,697 Active US10184961B2 (en) 2013-03-15 2016-09-26 Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator
US16/254,468 Active US10641799B2 (en) 2013-03-15 2019-01-22 Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator
US16/866,347 Active US11193961B2 (en) 2013-03-15 2020-05-04 Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator

Country Status (5)

Country Link
US (8) US9696350B2 (en)
KR (2) KR101563422B1 (en)
CN (5) CN106921292B (en)
TW (3) TWI517544B (en)
WO (1) WO2014210514A1 (en)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150154934A1 (en) * 2013-12-02 2015-06-04 Nvidia Corporation Method and system for customizing optimal settings using end-user preferences
US20150324088A1 (en) * 2014-05-09 2015-11-12 Lyve Minds, Inc. Thumbnail image creation
US20160163016A1 (en) * 2014-12-09 2016-06-09 Julia A. Gould Thread dispatching for graphics processors
US20170256023A1 (en) * 2016-03-02 2017-09-07 Alibaba Group Holding Limited Solid state storage local image processing system and method
US9846607B2 (en) 2015-03-12 2017-12-19 Nvidia Corporation Method and system for associating crash reports with end user analytics
US10008854B2 (en) 2015-02-19 2018-06-26 Enphase Energy, Inc. Method and apparatus for time-domain droop control with integrated phasor current control
US10331630B1 (en) 2016-03-24 2019-06-25 EMC IP Holding Company LLC Systems and methods for file triggers in a converged compute and file system
US10419537B1 (en) * 2016-03-24 2019-09-17 EMC IP Holding Company LLC Architecture for a converged compute and file system within network-attached storage clusters
US10474919B2 (en) 2016-04-19 2019-11-12 Patty's Gmbh Method for determining and displaying products on an electronic display device
US20210382934A1 (en) * 2015-10-05 2021-12-09 Pinterest, Inc. Dynamic search control invocation and visual search
US20220007296A1 (en) * 2015-04-01 2022-01-06 Ebay Inc. Battery Charge Aware Communications
US11290777B2 (en) * 2017-06-09 2022-03-29 Disney Enterprises, Inc. High-speed parallel engine for processing file-based high-resolution images
US11841735B2 (en) 2017-09-22 2023-12-12 Pinterest, Inc. Object based image search

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9035625B2 (en) * 2009-12-23 2015-05-19 R2 Semiconductor Common cascode routing bus for high-efficiency DC-to-DC conversion
US9069034B2 (en) * 2010-06-30 2015-06-30 University Of Manitoba Spintronic phase comparator permitting direct phase probing and mapping of electromagnetic signals
JP6014357B2 (en) * 2012-04-26 2016-10-25 ルネサスエレクトロニクス株式会社 Semiconductor device
CN104885243B (en) * 2012-06-14 2018-07-17 奥克兰大学服务有限公司 Self-inductance measurement dielectric elastomeric body device
US9154026B2 (en) 2012-06-27 2015-10-06 Intel Corporation Bridge driver for a switching voltage regulator which is operable to soft-switch and hard-switch
FR3001807B1 (en) * 2013-02-07 2016-06-10 Renault Sa METHOD FOR DETERMINING THE AVERAGE VOLTAGE OF THE CELLS OF A BATTERY, IN PARTICULAR A HIGH VOLTAGE BATTERY FOR AN ELECTRIC VEHICLE
US9696350B2 (en) * 2013-03-15 2017-07-04 Intel Corporation Non-linear control for voltage regulator
US9048851B2 (en) 2013-03-15 2015-06-02 Intel Corporation Spread-spectrum apparatus for voltage regulator
US8947281B1 (en) 2013-03-15 2015-02-03 Clariphy Communications, Inc. Apparatus and methods for actively terminated digital-to-analog conversion
US9667068B2 (en) * 2013-12-18 2017-05-30 Nvidia Corporation System, method, and computer program product for a switch mode current balancing rail merge circuit
US9246479B2 (en) * 2014-01-20 2016-01-26 Via Technologies, Inc. Low-offset bandgap circuit and offset-cancelling circuit therein
US9577525B2 (en) * 2014-03-04 2017-02-21 Maxim Integrated Products, Inc. Adaptive dead time control
US9891249B2 (en) * 2014-05-28 2018-02-13 Nxp B.V. Broad-range current measurement using duty cycling
US9720020B2 (en) * 2014-05-28 2017-08-01 Nxp B.V. Broad-range current measurement using variable resistance
KR102295182B1 (en) * 2014-07-29 2021-09-01 삼성전자주식회사 Dc-dc converting circuit and power management chip package
US9798347B2 (en) * 2014-10-30 2017-10-24 Infineon Technologies Austria Ag High speed tracking dual direction current sense system
US9664713B2 (en) * 2014-10-30 2017-05-30 Infineon Technologies Austria Ag High speed tracking dual direction current sense system
US9680391B2 (en) 2015-03-27 2017-06-13 Qualcomm Incorporated Multi-input scalable rectifier droop detector
US9753510B2 (en) * 2015-08-26 2017-09-05 Intel Corporation Apparatus and method to reduce power losses in an integrated voltage regulator
CN106533150B (en) * 2015-09-09 2018-10-09 力博特公司 A kind of mutual inductor magnetic balance method and apparatus of multistate switch circuit
US20170115329A1 (en) * 2015-10-22 2017-04-27 Memsic, Inc. Scalable average current sensor system
TWI550391B (en) * 2015-10-23 2016-09-21 台達電子工業股份有限公司 Integrated power module package structure
US9712906B1 (en) * 2016-02-22 2017-07-18 Cirrus Logic, Inc. Alternating current (AC) load identification technique using a search algorithm
US10958414B2 (en) 2016-02-23 2021-03-23 Google Llc Clock period randomization for defense against cryptographic attacks
CN106199483B (en) * 2016-06-13 2018-11-09 电子科技大学 A kind of nonlinear error compensation method of digital multimeter
JP2019169746A (en) * 2016-07-05 2019-10-03 旭化成エレクトロニクス株式会社 Da converter, da conversion method, adjusting unit, and adjustment method
US10122392B2 (en) * 2016-08-18 2018-11-06 Advanced Micro Devices, Inc. Active equalizing negative resistance amplifier for bi-directional bandwidth extension
DE102016122089A1 (en) * 2016-11-17 2018-05-17 HELLA GmbH & Co. KGaA Method for operating a polyphase DC-DC converter
TWI607632B (en) 2016-12-30 2017-12-01 立積電子股份有限公司 Signal detector
CN106842050A (en) * 2017-01-24 2017-06-13 中国电力科学研究院 A kind of battery temperature Forecasting Methodology and device
CN106685226B (en) * 2017-02-15 2019-05-21 华为技术有限公司 A kind of Multiphase Parallel DCDC circuit and its chip structure
CN108628383A (en) * 2017-03-22 2018-10-09 瑞萨电子美国有限公司 Combination temp monitoring and true different current senses in multi phase voltage regulator
US10635124B2 (en) 2017-04-11 2020-04-28 Intel Corporation Adaptive digital controller including linear and non-linear control mechanism
US10120406B1 (en) * 2017-04-27 2018-11-06 Microchip Technology Incorporated Adaptive common mode dimmer
US10230236B2 (en) * 2017-05-04 2019-03-12 Thermo King Corporation Method and system for feedback-based load control of a climate control system in transport
US10418994B1 (en) * 2017-07-12 2019-09-17 Xilinx, Inc. Circuit for and method of extending the bandwidth of a termination block
KR102400105B1 (en) 2017-07-25 2022-05-19 삼성전자주식회사 Ripple Compensator, Data Driving Circuit and Semiconductor device having the same
KR102476377B1 (en) * 2017-09-18 2022-12-12 현대자동차주식회사 System and method for voltage drop compensation control of power supply device
US10088857B1 (en) 2017-09-26 2018-10-02 Apple Inc. Highly granular voltage regulator
CN107896092B (en) * 2017-12-18 2021-04-23 长沙景嘉微电子股份有限公司 Circuit for relaxation oscillator capable of realizing accurate frequency modulation
CN108183596B (en) * 2017-12-21 2020-08-25 成都芯源***有限公司 DC converter and method thereof
US10090751B1 (en) * 2018-02-21 2018-10-02 Ixys, Llc Gate driver for switching converter having body diode power loss minimization
US10461643B1 (en) 2018-04-04 2019-10-29 Nanohenry, Inc. Composite embedded voltage regulator (CEVR)
CN108539979B (en) * 2018-05-02 2020-11-17 成都芯源***有限公司 DC converter and voltage DC conversion method
US11725985B2 (en) 2018-05-03 2023-08-15 Verity Instruments, Inc. Signal conversion system for optical sensors
US11527909B2 (en) 2018-05-11 2022-12-13 Assembled Products Corporation Magnetic charging device
US10371725B1 (en) 2018-05-31 2019-08-06 Xilinx, Inc. Out-of-range voltage detection and protection
CN108923650B (en) * 2018-06-27 2021-05-18 成都芯源***有限公司 Multiphase converter and control circuit and control method thereof
US10541615B1 (en) 2018-06-28 2020-01-21 Intel Corporation Device, method and system to mitigate a voltage overshoot event
US10340790B1 (en) * 2018-09-18 2019-07-02 CoolStar Technology, Inc. Integrated voltage correction using active bandpass clamp
US10910946B2 (en) * 2018-09-27 2021-02-02 Intel Corporation Self-tuning zero current detection circuit
CN111065187B (en) * 2018-10-17 2022-04-26 戴洛格半导体(英国)有限公司 Current regulator
US11201611B2 (en) 2018-12-12 2021-12-14 Intel Corporation Duty cycle control circuitry for input/output (I/O) margin control
US20200256914A1 (en) * 2019-02-07 2020-08-13 Nuvoton Technology Corporation Slew Rate Programming in Automatic Test Equipment (ATE)
TWI716817B (en) 2019-02-19 2021-01-21 立積電子股份有限公司 Power detector with all transistors being bipolar junction transistors
US10928886B2 (en) 2019-02-25 2021-02-23 Intel Corporation Frequency overshoot and voltage droop mitigation apparatus and method
US11515792B2 (en) * 2019-06-04 2022-11-29 Renesas Electronics America Inc. Current sharing scheme in current mode control for multiphase DC-DC converter
US11532984B2 (en) 2019-06-21 2022-12-20 Intel Corporation Voltage regulator circuit with parallel arrangement of discontinuous conduction mode voltage regulators
US10976764B2 (en) 2019-09-18 2021-04-13 Intel Corporation Differential to single-ended high bandwidth compensator
US11867788B2 (en) 2020-01-30 2024-01-09 Renesas Electronics America Inc. Method and system for full cycle error correction of inductor current measurement for switching regulators
US11300986B2 (en) 2020-02-25 2022-04-12 Hamilton Sundstrand Corporation Current balancing
CN111342786B (en) * 2020-04-21 2021-09-21 上海类比半导体技术有限公司 Differential amplifier common mode rejection ratio and gain trimming circuit
US11567551B2 (en) 2020-07-28 2023-01-31 Rohde & Schwarz Gmbh & Co. Kg Adaptive power supply
US20220198022A1 (en) * 2020-12-23 2022-06-23 Intel Corporation Secure device power-up apparatus and method
US20220233174A1 (en) * 2021-01-28 2022-07-28 Bfly Operations, Inc. Ultrasound device circuitry including phase-locked loop circuitry and methods of operating the same
US11658577B2 (en) 2021-01-29 2023-05-23 Qualcomm Incorporated Power management integrated circuit with a field programmable array of voltage regulators
US11761985B2 (en) 2021-02-09 2023-09-19 Analog Devices International Unlimited Company Calibration using flipped sensor for highly dynamic system
US11881774B2 (en) 2021-03-12 2024-01-23 Texas Instruments Incorporated Switching converter control loop and dynamic reference voltage adjustment
US20220357757A1 (en) * 2021-05-05 2022-11-10 Cirrus Logic International Semiconductor Ltd. Circuitry for driving a load
TWI801922B (en) 2021-05-25 2023-05-11 香港商科奇芯有限公司 Voltage regulator
CN113452252B (en) * 2021-06-28 2022-08-05 上海任威电子科技有限公司 Serial-connection type multi-path common-ground output communication power supply and overcurrent detection and protection method thereof
KR20230013681A (en) 2021-07-16 2023-01-27 삼성전자주식회사 Nonvolatile memory device
US11682974B2 (en) 2021-09-22 2023-06-20 Alpha And Omega Semiconductor International Lp Multi-phase switching regulator with variable gain phase current balancing using slope-compensated emulated phase current signals
US20230188038A1 (en) * 2021-12-09 2023-06-15 Renesas Electronics America Inc. Regulator booster
TWI832649B (en) * 2022-12-30 2024-02-11 宏碁股份有限公司 Self-calibration contact-sensing device and electronic device using the same
CN116483154B (en) * 2023-06-25 2023-09-12 上海海栎创科技股份有限公司 Low-delay reference output circuit and output method
CN117060921A (en) * 2023-08-15 2023-11-14 合芯科技(苏州)有限公司 Differential voltage-controlled loop oscillator, frequency adjusting method and electronic circuit

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040263908A1 (en) * 2003-06-27 2004-12-30 Xerox Corporation Raster image path architecture
US20080021834A1 (en) * 2006-07-19 2008-01-24 Mdatalink, Llc Medical Data Encryption For Communication Over A Vulnerable System
US7451405B2 (en) * 2004-09-15 2008-11-11 Research In Motion Limited Method for requesting and viewing a zoomed area of detail from an image attachment on a mobile communication device
US8218900B1 (en) * 2008-07-31 2012-07-10 Adobe Systems Incorporated Non-linear image scaling with seam energy
US8532435B1 (en) * 2009-08-18 2013-09-10 Adobe Systems Incorporated System and method for automatically adapting images
US8745341B2 (en) * 2008-01-15 2014-06-03 Red Hat, Inc. Web server cache pre-fetching

Family Cites Families (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2754955B1 (en) 1996-10-22 1998-12-24 Sgs Thomson Microelectronics DEVICE FOR LIMITING TRANSIENT VARIATIONS OF A SUPPLY VOLTAGE
US5889392A (en) * 1997-03-06 1999-03-30 Maxim Integrated Products, Inc. Switch-mode regulators and methods providing transient response speed-up
US6108529A (en) * 1998-02-01 2000-08-22 Bae Systems Aerospace Electronics Inc. Radio system including FET mixer device and square-wave drive switching circuit and method therefor
US6166528A (en) 1999-11-02 2000-12-26 Fairchild Semiconductor Corporation Lossless current sensing in buck converters working with low duty cycles and high clock frequencies
US6574742B1 (en) * 1999-11-12 2003-06-03 Insite One, Llc Method for storing and accessing digital medical images
CN1138340C (en) * 1999-11-18 2004-02-11 华为技术有限公司 Current-type step gain controller circuit for digital technology
DE10038372C2 (en) 2000-08-07 2003-03-13 Infineon Technologies Ag Differential digital / analog converter
US6577515B2 (en) 2001-03-02 2003-06-10 Advanced Micro Devices, Inc. Asymmetric power supply including a fast response converter
US6535071B2 (en) * 2001-05-17 2003-03-18 Micron Technology, Inc. CMOS voltage controlled phase shift oscillator
JP4810775B2 (en) 2001-08-03 2011-11-09 日本テキサス・インスツルメンツ株式会社 DC-DC converter
US6441597B1 (en) * 2001-10-31 2002-08-27 Semtech Corporation Method and apparatus for sensing output inductor current in a DC-to-DC power converter
US6690589B2 (en) * 2002-02-28 2004-02-10 Valere Power, Inc. Interleaved converter power factor correction method and apparatus
TWI220022B (en) 2002-05-27 2004-08-01 Richtek Technology Corp Current sensing apparatus and method
US6728121B2 (en) * 2002-05-31 2004-04-27 Green Power Technologies Ltd. Method and apparatus for active power factor correction with minimum input current distortion
US6670794B1 (en) 2002-07-12 2003-12-30 Richtek Technology Corp. Multi-phase DC-to-DC buck converter with multi-phase current balance and adjustable load regulation
ITMI20021539A1 (en) 2002-07-12 2004-01-12 St Microelectronics Srl DIGITAL CONTROLLER FOR SWITCHING DC-DC CONVERTERS
US6642752B1 (en) * 2002-09-20 2003-11-04 Texas Instruments Incorporated Broadband sample and hold circuit
US7574653B2 (en) * 2002-10-11 2009-08-11 Microsoft Corporation Adaptive image formatting control
US6879138B2 (en) 2002-10-18 2005-04-12 Intel Corporation Buck converter with transient suppression
US6850045B2 (en) 2003-04-29 2005-02-01 Texas Instruments Incorporated Multi-phase and multi-module power system with a current share bus
JP4271534B2 (en) * 2003-09-01 2009-06-03 株式会社リコー DC power supply device, driving method thereof, and semiconductor integrated circuit device including DC power supply circuit
US7239087B2 (en) * 2003-12-16 2007-07-03 Microsemi Corporation Method and apparatus to drive LED arrays using time sharing technique
TWI233996B (en) 2004-03-30 2005-06-11 Richtek Techohnology Corp Current-sensing device applied to multi-phase DC-to-DC converter
US7274181B2 (en) 2004-06-25 2007-09-25 Intel Corporation Systems, multiphase power converters with droop-control circuitry and methods
US7339440B2 (en) * 2004-11-30 2008-03-04 President And Fellows Of Harvard College Nonlinear pulse oscillator methods and apparatus
US7180274B2 (en) * 2004-12-10 2007-02-20 Aimtron Technology Corp. Switching voltage regulator operating without a discontinuous mode
DE602005025860D1 (en) * 2005-07-19 2011-02-24 St Microelectronics Srl Non-linear digital control circuit and method for a DC-DC converter
JP4546539B2 (en) * 2005-10-17 2010-09-15 パナソニック株式会社 Current addition type DAC
US7489117B2 (en) 2005-10-31 2009-02-10 Chil Semiconductor Corporation Dynamic conversion circuit for a voltage regulator module
KR101373956B1 (en) * 2005-11-11 2014-03-12 엘앤드엘 엔지니어링 엘엘씨 On-linear controller for switching power supply
DE602006014994D1 (en) 2005-12-08 2010-07-29 Nxp Bv High voltage switch with low voltage transformers
US7521907B2 (en) 2006-03-06 2009-04-21 Enpirion, Inc. Controller for a power converter and method of operating the same
US7385453B2 (en) * 2006-03-31 2008-06-10 Silicon Laboratories Inc. Precision oscillator having improved temperature coefficient control
US7400191B2 (en) * 2006-04-07 2008-07-15 Manuel De Jesus Rodriguez Switching power amplifier
DE102006019681A1 (en) 2006-04-27 2007-11-15 Infineon Technologies Ag Battery voltage controlling circuit arrangement for e.g. passenger car, has processing unit used for partial compensation of tolerances and/or temperature influences in signal and/or sensor arranged downstream to measuring device
EP2178340B1 (en) * 2006-06-02 2016-06-29 Panasonic Corporation Power Control Unit for High-Frequency Dielectric Heating
US7615982B1 (en) * 2006-07-26 2009-11-10 Fairchild Semiconductor Corporation Power converter able to rapidly respond to fast changes in load current
US7436158B2 (en) 2006-07-27 2008-10-14 Richtek Technology Corp. Low-gain current-mode voltage regulator
US7936932B2 (en) * 2006-08-24 2011-05-03 Dell Products L.P. Methods and apparatus for reducing storage size
US7482793B2 (en) * 2006-09-11 2009-01-27 Micrel, Inc. Ripple generation in buck regulator using fixed on-time control to enable the use of output capacitor having any ESR
US7471121B2 (en) * 2006-12-21 2008-12-30 System General Corp. Transistor drive circuit of power converter operating in a wide voltage range
JP5167736B2 (en) 2007-09-12 2013-03-21 株式会社リコー Switching regulator
CN201118434Y (en) * 2007-11-09 2008-09-17 华北电力大学 Dual PWM mixed cutting wave control circuit
JP5303910B2 (en) * 2007-11-20 2013-10-02 株式会社リコー Switching regulator
US7605609B1 (en) * 2007-12-17 2009-10-20 Lattice Semiconductor Corporation Programmable level shifter
JP4960216B2 (en) 2007-12-28 2012-06-27 ルネサスエレクトロニクス株式会社 D / A converter circuit
US7923974B2 (en) * 2008-01-04 2011-04-12 Chil Semiconductor Corporation Modification of switch activation order in a power supply
US20090240763A1 (en) * 2008-03-24 2009-09-24 Hones William G Messaging device and system
US7898233B2 (en) * 2008-04-11 2011-03-01 Renesas Electronics America Inc. Multiphase voltage regulators and methods for voltage regulation
US7863875B1 (en) * 2008-04-23 2011-01-04 Fairchild Semiconductor Corporation Non-linear control techniques for improving transient response to load current step change
US7764054B1 (en) * 2008-05-21 2010-07-27 Fairchild Semiconductor Corporation Voltage regulator with current-mode dual-edge width modulation and non-linear control
US8319486B2 (en) * 2008-06-13 2012-11-27 The Regents Of The University Of Colorado Method, apparatus and system for extended switched-mode controller
US7656200B2 (en) * 2008-06-30 2010-02-02 Intel Corporation Multiple-phase, differential sampling and steering
DE102008032556B3 (en) 2008-07-10 2009-09-10 Infineon Technologies Austria Ag Power circuit breaker e.g. high side circuit breaker, has coupling transistors for dividing signal current into internal and external signal currents, and measuring device for determining whether evaluation device is coupled to breaker
US8289732B2 (en) * 2008-12-23 2012-10-16 Iwatt Inc. Controller for switching power converter driving BJT based on primary side adaptive digital control
US8451632B2 (en) * 2009-03-12 2013-05-28 System General Corporation Dual-Switches flyback power converter with self-excited supply to power the high-side driver
TWI372506B (en) * 2009-03-19 2012-09-11 Richtek Technology Corp Hybrid control circuit and method for a multi-phase dc to dc converter
GB2469129B (en) * 2009-04-04 2013-12-11 Dyson Technology Ltd Current controller for an electric machine
US20120249550A1 (en) * 2009-04-18 2012-10-04 Lytro, Inc. Selective Transmission of Image Data Based on Device Attributes
JP5278817B2 (en) * 2009-04-28 2013-09-04 富士電機株式会社 Switching power supply
US8749213B2 (en) * 2009-06-09 2014-06-10 Silergy Technology Mixed mode control for switching regulator with fast transient responses
US8970195B2 (en) * 2009-06-10 2015-03-03 Stmicroelectronics S.R.L. Method for controlling an interleaving multiphase regulator and corresponding system
JP5439694B2 (en) * 2009-06-22 2014-03-12 ルネサスエレクトロニクス株式会社 Pulse width modulation circuit
US8587274B2 (en) * 2009-09-17 2013-11-19 Linear Technology Corporation Feedback control of a DC/DC power converter
US8441242B2 (en) * 2010-06-04 2013-05-14 Fuji Electric Co., Ltd. Digitally controlled integrated DC-DC converter with transient suppression
US8797009B2 (en) 2010-07-06 2014-08-05 Csr Technology Inc. Auto cascode buck voltage converter
US8476880B2 (en) * 2010-08-19 2013-07-02 Texas Instruments Incorporated System and method for reducing output voltage of a power regulator under light load
US8143944B2 (en) * 2010-08-23 2012-03-27 Texas Instruments Incorporated Method and apparatus for sensing a current for varying impedance loads
US8680821B2 (en) * 2010-12-22 2014-03-25 Intel Corporation Load adaptive voltage regulator
US8692609B2 (en) 2011-02-25 2014-04-08 Peregrine Semiconductor Corporation Systems and methods for current sensing
US20120229107A1 (en) * 2011-03-11 2012-09-13 Intersil Americas Inc. System and method for current sensing within a voltage regulator
CN102185475B (en) * 2011-03-11 2013-03-13 苏州易能微电子科技有限公司 Quick nonlinear response control loop
WO2012145383A2 (en) * 2011-04-18 2012-10-26 Innovolt, Inc. Voltage sag corrector using a variable duty cycle boost converter
TWI430551B (en) * 2011-05-16 2014-03-11 Realtek Semiconductor Corp Multi-channel power supply and current balancing control method thereof
CN202160110U (en) * 2011-07-26 2012-03-07 立锜科技股份有限公司 Multi-phase switching type power supply and droop signal generation circuit used therein
US9166473B2 (en) * 2011-08-31 2015-10-20 Linear Technology Corporation DC/DC power converter with feedback control operable in linear and non-linear modes
CN102332823B (en) * 2011-09-07 2014-07-09 复旦大学 Adaptive turnon time control circuit suitable for high-frequency step-down voltage converter
CN103248353B (en) * 2012-02-07 2016-05-25 昂宝电子(上海)有限公司 For the level shift system and method for voltage driver
CN102545907B (en) * 2012-02-27 2014-06-11 苏州科山微电子科技有限公司 Digital-analogue converter
TWM443985U (en) * 2012-08-27 2012-12-21 Richtek Technology Corp Power supply circuit
JP2014112988A (en) * 2012-12-05 2014-06-19 Sanken Electric Co Ltd Switching power-supply device
TWI495236B (en) 2012-12-21 2015-08-01 System General Corp Controlling circuits and controlling methods
US9696350B2 (en) 2013-03-15 2017-07-04 Intel Corporation Non-linear control for voltage regulator
JP2015097460A (en) 2013-11-15 2015-05-21 株式会社東芝 DC-DC converter
US9461536B2 (en) * 2013-11-27 2016-10-04 Infineon Technologies Austria Ag Digital controller with nested loops for switched mode power converter
TWI528127B (en) * 2014-02-21 2016-04-01 Alpha & Omega Semiconductor Regulator control method
US9467043B2 (en) * 2014-03-26 2016-10-11 Micrel, Inc. Buck DC-DC converter with fixed frequency
US10348200B2 (en) * 2014-06-02 2019-07-09 Intel Corporation Digital current sensor for on-die switching voltage regulator
US9618539B2 (en) 2015-05-28 2017-04-11 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Sensing current of a DC-DC converter

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040263908A1 (en) * 2003-06-27 2004-12-30 Xerox Corporation Raster image path architecture
US7451405B2 (en) * 2004-09-15 2008-11-11 Research In Motion Limited Method for requesting and viewing a zoomed area of detail from an image attachment on a mobile communication device
US20080021834A1 (en) * 2006-07-19 2008-01-24 Mdatalink, Llc Medical Data Encryption For Communication Over A Vulnerable System
US8745341B2 (en) * 2008-01-15 2014-06-03 Red Hat, Inc. Web server cache pre-fetching
US8218900B1 (en) * 2008-07-31 2012-07-10 Adobe Systems Incorporated Non-linear image scaling with seam energy
US8532435B1 (en) * 2009-08-18 2013-09-10 Adobe Systems Incorporated System and method for automatically adapting images

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10878770B2 (en) * 2013-12-02 2020-12-29 Nvidia Corporation Method and system for customizing optimal settings using end-user preferences
US11798514B2 (en) 2013-12-02 2023-10-24 Nvidia Corporation Method and system for customizing optimal settings using end-user preferences
US20150154934A1 (en) * 2013-12-02 2015-06-04 Nvidia Corporation Method and system for customizing optimal settings using end-user preferences
US20150324088A1 (en) * 2014-05-09 2015-11-12 Lyve Minds, Inc. Thumbnail image creation
US20160163016A1 (en) * 2014-12-09 2016-06-09 Julia A. Gould Thread dispatching for graphics processors
US9824414B2 (en) * 2014-12-09 2017-11-21 Intel Corporation Thread dispatching for graphics processors
US10332232B2 (en) * 2014-12-09 2019-06-25 Intel Corporation Thread dispatching for graphics processors
US10008854B2 (en) 2015-02-19 2018-06-26 Enphase Energy, Inc. Method and apparatus for time-domain droop control with integrated phasor current control
US11355936B2 (en) 2015-02-19 2022-06-07 Enphase Energy, Inc. Method and apparatus for time-domain droop control with integrated phasor current control
US10951037B2 (en) 2015-02-19 2021-03-16 Enphase Energy, Inc. Method and apparatus for time-domain droop control with integrated phasor current control
US9846607B2 (en) 2015-03-12 2017-12-19 Nvidia Corporation Method and system for associating crash reports with end user analytics
US20220007296A1 (en) * 2015-04-01 2022-01-06 Ebay Inc. Battery Charge Aware Communications
US11792733B2 (en) * 2015-04-01 2023-10-17 Ebay Inc. Battery charge aware communications
US20210382934A1 (en) * 2015-10-05 2021-12-09 Pinterest, Inc. Dynamic search control invocation and visual search
US10552936B2 (en) * 2016-03-02 2020-02-04 Alibaba Group Holding Limited Solid state storage local image processing system and method
US20170256023A1 (en) * 2016-03-02 2017-09-07 Alibaba Group Holding Limited Solid state storage local image processing system and method
US10419537B1 (en) * 2016-03-24 2019-09-17 EMC IP Holding Company LLC Architecture for a converged compute and file system within network-attached storage clusters
US10331630B1 (en) 2016-03-24 2019-06-25 EMC IP Holding Company LLC Systems and methods for file triggers in a converged compute and file system
US10474919B2 (en) 2016-04-19 2019-11-12 Patty's Gmbh Method for determining and displaying products on an electronic display device
US11290777B2 (en) * 2017-06-09 2022-03-29 Disney Enterprises, Inc. High-speed parallel engine for processing file-based high-resolution images
US11841735B2 (en) 2017-09-22 2023-12-12 Pinterest, Inc. Object based image search

Also Published As

Publication number Publication date
US9733282B2 (en) 2017-08-15
US20170030947A1 (en) 2017-02-02
CN104113212B (en) 2017-01-04
TW201626705A (en) 2016-07-16
CN106200742A (en) 2016-12-07
CN104242876B (en) 2017-06-09
KR20150068343A (en) 2015-06-19
CN106921292B (en) 2019-07-26
US8890737B2 (en) 2014-11-18
CN104181967B (en) 2016-08-17
US20140266486A1 (en) 2014-09-18
US20140266832A1 (en) 2014-09-18
US20140266119A1 (en) 2014-09-18
KR20140113576A (en) 2014-09-24
TW201709652A (en) 2017-03-01
TWI586088B (en) 2017-06-01
KR101563422B1 (en) 2015-10-26
CN104113212A (en) 2014-10-22
US11193961B2 (en) 2021-12-07
US10184961B2 (en) 2019-01-22
CN106200742B (en) 2019-04-26
US20190154739A1 (en) 2019-05-23
CN106921292A (en) 2017-07-04
TW201509102A (en) 2015-03-01
US9046552B2 (en) 2015-06-02
CN104242876A (en) 2014-12-24
TWI636653B (en) 2018-09-21
US9696350B2 (en) 2017-07-04
US10641799B2 (en) 2020-05-05
US20200264214A1 (en) 2020-08-20
WO2014210514A1 (en) 2014-12-31
CN104181967A (en) 2014-12-03
US20150069995A1 (en) 2015-03-12
TWI517544B (en) 2016-01-11

Similar Documents

Publication Publication Date Title
US20140267439A1 (en) Image Delivery Architecture
US11017018B2 (en) Systems and methods of building and using an image catalog
US10885100B2 (en) Thumbnail-based image sharing method and terminal
CN110458918B (en) Method and device for outputting information
CA2719593C (en) Dynamic composition for image transmission
US8122059B2 (en) Cache system and method for generating uncached objects from cached and stored object components
US8446411B2 (en) Adaptive image rendering and use of imposter
US8648858B1 (en) Hybrid text and image based encoding
US8295617B2 (en) Systems and methods for enhanced image encoding
US9785608B2 (en) Predictive, multi-layer caching architectures
US8913068B1 (en) Displaying video on a browser
US10929365B2 (en) Automatic generation of animated previews for presenting document differences in enterprise messaging
US20090044128A1 (en) Adaptive publishing of content
US8208762B1 (en) Optimizing the performance of an image editing system in a client-server environment
US8234558B2 (en) Adaptive artwork for bandwidth- and/or memory-limited devices
US8994748B2 (en) Anchors for displaying image sprites, sub-regions and 3D images
WO2016100541A1 (en) Network based static font subset management
CN110188216B (en) Photo live broadcasting system with character recognition and method thereof
US20190114989A1 (en) Systems and methods for image optimization
US20210110214A1 (en) Selective image compression of an image stored on a device based on user preferences
US20170075886A1 (en) Selecting digital content for inclusion in media presentations
US20210142540A1 (en) Intelligent exporting of images using an image editing application
KR20140079418A (en) Enabling immersive search engine home pages
WO2015154678A1 (en) File processing method, device, and network system
EP3819782B1 (en) Computing device, method of operation and computer program for a computing device

Legal Events

Date Code Title Description
AS Assignment

Owner name: PINTEREST, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:JENKINS, JON;REEL/FRAME:030712/0846

Effective date: 20130626

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION