Patent Publication Number: US-9842115-B2

Title: Media asset proxies

Description:
TECHNICAL FIELD 
     The present technology pertains to digital media asset management, and more specifically pertains to creating media asset proxies that can be used to represent digital media assets. 
     BACKGROUND 
     Digital media assets can be created and shared among a variety of electronic devices. For example, mobile phones, desktop computers, tablets, or laptops are all capable of creating, storing, and utilizing digital media assets. A device user can record a movie using a mobile phone and then upload the movie to a network cloud so that it is accessible on the device user&#39;s tablet. It is typical for device users to manage digital media assets among multiple electronic devices. Consequently, digital media assets are often backed-up or shared using computer networks such as cloud computing and storage. 
     However, uploading and downloading content-rich digital media assets can burden network resources due to the large file sizes. Furthermore, storing many large digital media assets on multiple devices can be impractical and inefficient. Consequently, digital media assets can be managed more effectively by creating and using media asset proxies. 
     SUMMARY 
     Additional features and advantages of the disclosure will be set forth in the description which follows, and in part will be obvious from the description, or can be learned by practice of the herein disclosed principles. The features and advantages of the disclosure can be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other features of the disclosure will become more fully apparent from the following description and appended claims, or can be learned by the practice of the principles set forth herein. 
     Digital media assets can have large file sizes that can burden both network and device resources. The proliferation of electronic devices that are capable of creating content-rich digital media assets necessitates a more effective manner for managing the wide inventory of digital media assets. A media asset proxy can have a significantly smaller file size than its corresponding digital media asset while preserving all relevant properties of the digital media asset. For example, the media asset proxy can be queried for properties such as the title, the file type, the author, copyright, the language, the time duration of a movie, audio sample rate, video sample rate, etc. These properties can all be read by software on the device that is configured to inspect or query a file type that corresponds to the digital media asset. Disclosed are systems, methods, and non-transitory computer-readable storage media for creating and using media asset proxies that can be used to represent digital media assets. 
     One aspect of the present technology involves a method for creating a media asset proxy. The media asset proxy can be created by parsing the corresponding digital media asset and identifying individual elements for exclusion from the media asset proxy. Furthermore, a portion of the elements that remain for inclusion in the media asset proxy can be reduced in size by intelligently truncating or encoding the data associated with the element. The resulting media asset proxy can be queried in the same manner as its corresponding digital media asset because it maintains all of the relevant properties while having a significantly smaller file size. 
     Another aspect of the present technology involves a non-transitory computer-readable storage medium that has instructions that cause a processor to create a media asset proxy. The media asset proxy can be created by parsing the corresponding digital media asset and identifying individual elements for exclusion from the media asset proxy. The elements can be excluded according to an omission filter that removes elements when their identified type indicates that they are not required to formulate a response to a query of the media asset proxy. Also, a portion of the elements that included in the media asset proxy can be reduced in size by truncating or encoding the element so that it can masquerade as the original. The resulting media asset proxy can be queried in the same manner as its corresponding digital media asset because it maintains all of the relevant properties while having a significantly smaller file size. 
     A further aspect of the present technology involves a method for using a media asset proxy. A media asset proxy representing a digital media asset can be downloaded to a client device and queried to determine any of the properties of its corresponding digital media asset. Based on the results of the query, the device or its user can determine if the digital media asset is suitable for the device. Accordingly, the digital media asset can be downloaded to the device. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       In order to describe the manner in which the above-recited and other advantages and features of the disclosure can be obtained, a more particular description of the principles briefly described above will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. Understanding that these drawings depict only exemplary embodiments of the disclosure and are not therefore to be considered to be limiting of its scope, the principles herein are described and explained with additional specificity and detail through the use of the accompanying drawings in which: 
         FIG. 1  illustrates an exemplary cloud computing configuration; 
         FIG. 2  illustrates an exemplary method embodiment; 
         FIG. 3  illustrates an exemplary element from a digital media asset; 
         FIG. 4  illustrates an exemplary atom structure from a video asset; 
         FIG. 5  illustrates an exemplary file structure of a digital media asset; 
         FIG. 6  illustrates an exemplary file structure of a media asset proxy; 
         FIG. 7  illustrates an exemplary method embodiment; and 
         FIG. 8A  and  FIG. 8B  illustrate exemplary system embodiments. 
     
    
    
     DESCRIPTION 
     Various embodiments of the disclosure are discussed in detail below. While specific implementations are discussed, it should be understood that this is done for illustration purposes only. A person skilled in the relevant art will recognize that other components and configurations may be used without parting from the spirit and scope of the disclosure. 
     The disclosed technology addresses the need in the art for creating media asset proxies that can be used to effectively represent digital media assets. In particular, the present technology is directed to systems, methods, devices, and non-transitory computer-readable storage media providing the creation of media asset proxies for the effective management of digital media assets. 
     Prior to discussing the present technology in detail, a brief introductory description of an exemplary configuration of devices and a network is disclosed herein. A detailed description of the various aspects of the present technology will then follow. These variations will be described herein as the various embodiments are set forth. 
     Cloud computing is a type of Internet-based computing in which a variety of resources are hosted and/or controlled by an entity and made available by the entity to authorized users via the Internet. An exemplary cloud computing system configuration  100  is illustrated in  FIG. 1  wherein a variety of electronic devices can communicate via a network for purposes of exchanging content and other data. The system can be configured for use on a wide variety of network configurations that facilitate the intercommunication of electronic devices. For example, each of the components of system  100  in  FIG. 1  can be implemented in a localized or distributed fashion in a network. 
     System  100  can be configured to include cloud infrastructure  120 . The cloud infrastructure  120  can include a variety of hardware and/or software resources, such as cloud servers  122 , cloud databases  124 , cloud storage  126 , cloud networks  128 , cloud applications, cloud platforms, and/or any other cloud computing resources. In some cases, the cloud computing resources are distributed. For example, cloud storage  126  can include multiple storage devices. In some cases, cloud computing resources can be distributed across multiple cloud computing systems and/or individual network connected computing devices. For example, cloud infrastructure  120  can communicate with servers  104   1 ,  104   2 , . . . ,  104   n  (collectively “ 104 ”), database  106 , and/or any other network connected computing device to provide the cloud computing resources. 
     Furthermore, in some cases, the cloud computing resources can be redundant. For example, if cloud infrastructure  120  is configured to provide data backup services, multiple copies of the data can be stored such that if one storage resource is unavailable, the data will still be available to the user via a different storage resource. In another example, if cloud infrastructure  120  is configured to provide software, the software can be available from different cloud servers so that the software can be served from the closest server. 
     In system  100 , a user interacts with the cloud infrastructure  120  through user terminals  102   1 ,  102   2 , . . . ,  102   n  (collectively “ 102 ”) connected to a network by direct and/or indirect communication. Cloud infrastructure  120  can support connections from a variety of different electronic devices, such as servers; desktop computers; mobile computers; handheld communications devices, e.g., mobile phones, smart phones, tablets; set top boxes; network-enabled hard drives; and/or any other network-enabled computing devices. Furthermore, cloud infrastructure  120  can concurrently accept connections from and interact with multiple electronic devices. 
     Cloud infrastructure  120  can provide cloud computing resources through a variety of deployment models, such as public, private, community, hybrid, and/or any other cloud deployment model. In some cases, cloud infrastructure  120  can support multiple deployment models. For example, cloud infrastructure  120  can provide one set of resources through a public deployment model and another set of resources through a private deployment model. 
     In some configurations, a user terminal  102   i  can access cloud infrastructure  120  from any location where an Internet location is available. However, in other cases, cloud infrastructure  120  can be configured to restrict access to certain resources such that a resource can only be accessed from certain locations. For example, if cloud infrastructure  120  is configured to provide a resource using a private deployment model, then cloud infrastructure  120  can restrict access to the resource, such as by requiring that a user terminal  102   i  access the resource from behind a firewall. 
     Cloud infrastructure  120  can provide cloud computing resources to user terminals  102  through a variety of service models, such as Software as a Service (SaaS), Platforms as a service (PaaS), Infrastructure as a Service (IaaS), and/or any other cloud service models. In some cases, cloud infrastructure  120  can provide multiple service models to a user terminal  102   i . For example, cloud infrastructure  120  can provide both SaaS and IaaS to a user terminal  102   i . In some cases, cloud infrastructure  120  can provide different service models to different user terminals  102 . For example, cloud infrastructure  120  can provide SaaS to user terminal  102   1  and PaaS to user terminal  102   2 . 
     In some cases, cloud infrastructure  120  can maintain an account database (not shown). The account database can store profile information for registered users. The profile information can include resource access rights, such as software the user is permitted to user, maximum storage space, etc. The profile information can also include usage information, such as computing resources consumed, data storage location, security settings, personal configuration settings, etc. 
     Cloud infrastructure  120  can provide a variety of functionality that requires user interaction. Accordingly, a user interface (UI) can be provided for communicating with cloud infrastructure  120  and/or performing tasks associated with the cloud computing resources. The UI can be accessed via an end user terminal  102   i  in communication with cloud infrastructure  120 . The UI can be configured to operate in a variety of client modes, including a fat client mode, a thin client mode, or a hybrid client mode, depending on the storage and processing capabilities of cloud infrastructure  120  and/or the user terminal  102   i . Therefore, a UI can be implemented as a standalone application operating at the user terminal in some embodiments. In other embodiments, a web browser-based portal can be used to provide the UI. Any other configuration to access cloud infrastructure  120  can also be used in the various embodiments. 
     As described above, in some configurations, the cloud computing resources can be used to store user data. The present disclosure contemplates that, in some instances, this gathered data might include personal and/or sensitive data. The present disclosure further contemplates that the entities responsible for the collection, analysis, disclosure, transfer, storage, or other use of such data should implement and consistently use privacy policies and practices that are generally recognized meeting or exceeding industry or governmental requirements for maintaining personal information data private and secure. For example, personal data from users should be collected for legitimate and reasonable uses of the entity and not shared or sold outside of those legitimate uses. Further, such collection should occur only after the informed consent of the users. Additionally, such entities should take any needed steps for safeguarding and securing access to such personal data and ensuring that others with access to the personal data adhere to their privacy and security policies and procedures. Further, such entities can subject themselves to evaluation by third parties to certify their adherence to widely accepted privacy policies and practices. 
     Despite the foregoing, the present disclosure also contemplates embodiments in which users selectively block the use of, or access to, personal data. That is, the present disclosure contemplates that hardware and/or software elements can be provided to prevent or block access to such personal data. For example, the present technology can be configured to allow users to select the data that is stored in cloud storage. 
     Therefore, although the present disclosure broadly covers use of personal data to implement one or more various disclosed embodiments, the present disclosure also contemplates that the various embodiments can also be implemented without the need for accessing such personal data. That is, the various embodiments of the present technology are not rendered inoperable due to the lack of all or a portion of such personal data. For example, non-personal data can be stored in cloud storage. 
     Now that some basic concepts have been set forth, the present disclosure turns to a more detailed description of the present technology. As discussed above, the present technology is directed to systems and methods to create media asset proxies that can represent digital media assets. The following figures provide exemplary systems and methods for practicing the present technology. 
     Turning now to  FIG. 2 , an operation of the process for creating a media asset proxy for a digital media asset will be discussed in further detail.  FIG. 2  is a flowchart of steps in an exemplary method  200  for creating a media asset proxy. Method  200  begins at step  202  and continues to step  204 . At step  204 , the client device, an example of which is user terminal  102   n , receives a digital media asset. 
     A digital media asset can include images and multimedia files, such as music or movie files. The client device can receive the digital media asset by downloading it from a cloud infrastructure, such as cloud infrastructure  120  described in system  100 . Alternatively, the client device can receive the digital media asset via email, instant messaging, multimedia messaging service (MMS), or any other social media application. The client device can also download the digital media asset from an online store or it can create the digital media asset locally by using hardware and software resources available on the device. For example, the client device can be a cellular phone that includes a camera that is capable of recording movies and storing them on the device. 
     After the client device receives the digital media asset at  204 , method  200  continues to step  206  where it parses the digital media asset to identify elements within the media file. For example, a movie file that conforms to the QUICKTIME file format developed by Apple Inc. of Cupertino, Calif. can include elements referred to as atoms. Similarly, a movie file that conforms to the Moving Picture Experts Group (MPEG) standard maintained by the International Organization for Standardization (ISO) can include elements referred to as boxes. Elements such as atoms and boxes are tagged data structures that make up the movie file. 
     The atoms or boxes in the movie file define a hierarchical structure. For example, an atom can contain another atom, which can contain additional atoms, and so on. An atom that contains other atoms is called a container atom. Alternatively, an atom that only contains data and does not contain other atoms is called a leaf atom.  FIG. 3  illustrates an exemplary atom structure. Atom  302  is classified as a container atom because it includes atom  304 . Similarly, atom  304  is also classified as a container atom because it contains atom  306 . Conversely, atom  306  is classified as a leaf atom because it only includes atom data and does not include any additional atoms. Atoms can contain the actual movie sample data as well as metadata that includes information such as the number of tracks, the video compression format, timing information, frame rate, etc. 
     Parsing the digital media asset to identify elements such as atoms and boxes creates a record of the file structure of the digital media asset. In the case of a hierarchical file structure, a recursive algorithm can be used to effectively parse the elements and efficiently establish the file structure. For example, the parse can be performed in file offset order and can use recursion to parse container atoms as needed. Elements can be present in any order so the entire file needs to be parsed before concluding that a particular element is not present in the digital media asset. 
     Once the file structure and associated elements are identified, method  200  proceeds to step  208  wherein the first element is examined. An element is examined to determine the particular contents of the element and to determine whether that element and its contents should be included in the media asset proxy. In particular, an element can be excluded from the media asset proxy, included verbatim in the media asset proxy, or modified for inclusion in the media asset proxy. 
     Accordingly, the examination of the first element encompasses a series of steps. First, method  200  proceeds to step  210  to determine if the element can be excluded from the media asset proxy. In one example, elements can be excluded using a filtering algorithm that omits or includes an element according to its type. In another example, elements can be removed according to predetermined removal criteria. 
     For instance, when processing a QUICKTIME media asset, an atom omission filter can be used to determine if individual atoms can be excluded. The atom omission filter can exclude any atom that is not needed to formulate a response to a query of the digital media asset, and therefore is not required for proper functionality of the media asset proxy. An example of an atom that is not needed by the media asset proxy is the media data (‘mdat’) atom. The media data atom contains the actual media samples that correspond to the video. These atoms are not required because the media asset proxy is intended to represent the digital media asset and is not intended to support playback of the digital media asset. 
     Similarly, atoms that designate free space (‘free’) or reserved space (‘wide’) can be excluded by the atom omission filter because they are not needed by the media asset proxy. These atoms do not contain any relevant data that would be needed by the media asset proxy to respond to a query of the digital media asset. Accordingly, the atom omission filter can mark these atoms for exclusion and the atoms are discarded at step  212  of method  200 . 
     In some embodiments, the atom omission filter or the predetermined removal criteria can be customized to omit additional atoms that are not required for a particular application of the media asset proxy. For example, an application that makes use of the media asset proxy for only querying the title and the length of a movie file can exclude elements related to other properties of the digital media asset. Consequently, the media asset proxy can be further reduced in size by customizing the atom omission filter or the predetermined removal criteria. 
     Alternatively, an element cannot be discarded according to the filtering algorithm or the predetermined removal criteria if it includes data that is needed to respond to an anticipated query of the media asset proxy. In this case, the method proceeds to step  214  to determine if the size of the element can be reduced. There are particular elements of the digital media asset that can be intelligently reduced in size while maintaining characteristics that are substantially equivalent to the original elements. The algorithms employed can advantageously reduce the size of the elements because the media asset proxy does not have to support playback of the digital media asset. In particular, elements that are candidates for size reduction are processed at step  216  using algorithms that encode, truncate, or recreate the element. 
     Encoding involves compressing data so that it occupies less memory than the original data representation. In particular, run-length encoding (RLE) is a form of data compression wherein sequences of data elements with the same data value are stored as a single data value and a corresponding count. RLE can be used to compress elements of digital media assets that include data patterns with these characteristics. 
     For example, the sample table atom (‘stbl’) is a container atom in a QUICKTIME media asset that contains various atoms that are candidates for size reduction. The sample table atom contains all the time and data indexing of the media samples in a particular track (‘trak’).  FIG. 4  illustrates an exemplary sample table atom structure with all of the leaf atoms that it can include. The sample table atom structure in  FIG. 4  is also used in media assets such as MPEG-4 and Motion JPEG-2000. 
     The sample table atom can include atoms that are candidates for the encoding algorithm to reduce the atom size. For example, the composition offset atom (‘ctts’), the time-to-sample atom (‘stts’), and the sample size atom (‘stsz’) can all be encoded to reduce their size. 
     The composition offset atom contains a sample-by-sample mapping of the decode-to-presentation time. Each entry in the composition table is a time delta from decode to presentation time. The composition offset table includes an entry for each distinct offset value. The entry includes the number of samples that have the offset and the offset value. Here is an example of an offset table: 
     
       
         
           
               
               
               
             
               
                   
                   
               
               
                   
                 SampleCount 
                 Offset 
               
               
                   
                   
               
             
            
               
                   
                 4 
                 5 
               
               
                   
                 3 
                 6 
               
               
                   
                 8 
                 2 
               
               
                   
                 6 
                 1 
               
               
                   
                   
               
            
           
         
       
     
     This offset table indicates that there are 4 samples with an offset of 5, there are 3 samples with an offset of 6, there are 8 samples with an offset of 2, and there are 6 samples with an offset of 1. The offset table can be encoded with a table that contains up to three entries. The entries on the encoded table correspond to: [number of samples with minimum value, minimum offset value], [number of samples with maximum value, maximum offset value], and [number of remaining samples, average offset value of remaining samples]. In the table above, the minimum offset value is 1, the maximum offset value is 6, and there are 12 other samples with an average offset value of 3. Accordingly the table above can be replaced with following table: 
     
       
         
           
               
               
               
             
               
                   
                   
               
               
                   
                 SampleCount 
                 Offset 
               
               
                   
                   
               
             
            
               
                   
               
            
           
           
               
               
               
            
               
                   
                 6 
                 1 
               
               
                   
                 3 
                 6 
               
               
                   
                 12 
                 3 
               
               
                   
                   
               
            
           
         
       
     
     This method of simplifying the composition offset table can greatly reduce the complexity of the composition offset atom. When the minimum and maximum values are equal, the simplified table can contain a single entry. When there are two distinct values, the simplified table can contain two entries. However, any table with more than two offset values can be reduced to a table with three entries in the manner described above. 
     The next atom that can be encoded is the time-to-sample atom. The time-to-sample atom stores duration information for a digital media asset&#39;s samples, providing a mapping from a time in a media to the corresponding data sample. The time-to-sample atom contains a time-to-sample table that is similar to the composition offset table. The time-to-sample table contains entries that indicate a number of samples and the corresponding sample duration for those samples. Accordingly, the time-to-sample table can be encoded in a similar fashion as the composition offset table. The modified time-to-sample table can include up to three entries: [number of samples with minimum value, minimum sample duration], [number of samples with maximum value, maximum sample duration], and [number of remaining samples, average sample duration of remaining samples]. This encoding algorithm can greatly reduce the size of the time-to-sample atom. 
     Another atom that can be encoded is the sample size atom. The sample size atom specifies the size of each sample in the media asset. It contains the sample count and a table giving the size of each sample. This table can be reduced in size by summing all of the sample sizes and dividing by the total number of samples to yield a common sample size. 
     As noted above, in addition to using an encoding algorithm to reduce atom size, recreation can also be utilized to reduce atom size for certain atoms. Recreation involves generating an atom for the proxy file that masquerades as the original atom, but has a smaller size. An atom is a candidate for recreation if it cannot be discarded altogether but its function can be mimicked or simulated by a simpler data set. 
     For example, the sample-to-chunk atom (‘stsc’) contains a table that maps individual samples to “chunks” that contain one or more samples. The chunks are interleaved in the media asset file for optimized data access. However, the media asset proxy is not required to support playback function, so the actual chunk organization is not required but the table must be present and accurate concerning the number of samples in the track. Accordingly, the sample-to-chunk table can be replaced with a single entry that makes all media samples appear to be in one chunk. This technique builds a table with the minimum number of entries required by a software application programming interface (API) that might query the media asset proxy. 
     Similarly, the chunk offset atom (‘stco’) included in the sample table atom can be simplified using a similar technique. The chunk offset atom identifies the location of each chunk of data in the media asset&#39;s data stream. However, as discussed above, the media asset proxy simulates having all media samples in a single chunk. Therefore, the media asset proxy&#39;s chunk offset atom can be simplified to contain a single offset that corresponds to the single chunk. In some instances, the sample table atom contains a 64-bit chunk offset atom (‘co64’) that contains 64 bit offsets instead of 32 bit offsets. The 64-bit chunk offset atom can be simplified using the same technique as the corresponding 32 bit chunk offset atom. 
     As further noted above, in addition to using encoding and recreation to reduce atom size, truncation can also be utilized to reduce atom size for certain atoms. Truncation involves generating an atom for the proxy file which excludes portions of the original atom that are non-essential for performing queries or by only including an essential subset of the atoms, resulting in a smaller size. 
     For example, the sample dependency flags atom (‘sdtp’) includes a table that describes the dependency of each sample in a track. An inspection or query of a movie by a software API can require surveying the dependency flags for many samples. Accordingly, a fixed number of the dependency flags can be copied to the media asset proxy to satisfy this query operation. The resulting table in the media asset proxy can be a fixed size regardless of the length of the digital media asset. In one embodiment, the first 500 bytes of the sample dependency flags atom is included in the media asset proxy and the remaining portion of the atom is truncated. 
     Returning to method  200 , after the element is processed at step  216 , a copy of the newly revised element is stored for use in the media asset proxy at step  220 . Alternatively, if the element is not a candidate for size reduction, the process bypasses step  216  and continues to step  218  wherein a copy of the original element is stored for use in the media asset proxy. Hence, elements that cannot be excluded and cannot be reduced in size are copied verbatim from the digital media asset to the media asset proxy. One that is skilled in the art will appreciate that in some embodiments, a combination of encoding, truncating, or recreating can be used to reduce the size of an element. 
     Returning to the QUICKTIME example, the file type atom (‘ftyp’) and the movie atom (‘moov’) are typically located at the top of the file structure hierarchy. The file type atom defines the compatible file specification of the movie. This atom can be used to differentiate between QUICKTIME, MPEG-4, and JPEG-2000 files. Accordingly, the file type atom cannot be excluded or reduced in size. Moreover, the movie type atom encompasses a number of leaf atoms that contain metadata about the movie. While a number of these leaf atoms have been identified for exclusion or size reduction, the movie type atom cannot be excluded or reduced in size. Accordingly, both the file type atom and the movie atom are copied to the media asset proxy. 
     After the copy of the original element is stored at step  218 , the process continues to step  222  where it determines if all of the elements within the digital media asset have been examined. This determination is made according to the information that was obtained by parsing the digital media asset to identify all of the elements at step  206 . Accordingly, if there are additional elements that can be examined, the process proceeds to step  224  where it examines the next element. The process will further continue to determine if the next element can be excluded at  210  or reduced in size at  214 . However, if all of the elements have been examined, the method continues to create the media asset proxy at  226 . 
     The media asset proxy can be created using a file structure that is similar to the digital media asset. For example, the media asset proxy can have a similar hierarchy of elements as its corresponding digital media asset. The media asset proxy can be created using elements that were copied in their original form or modified using an algorithm to reduce their size. Certain elements from the digital media asset can be excluded altogether from the media asset proxy without affecting its ability to be queried or inspected by software that is designed to interface with the digital media asset. 
     In some embodiments, the media asset proxy can be created concurrently with the parsing of the digital media asset. For example, the parsing can identify a first element in the digital media asset and the parsed element can be omitted from the media asset proxy or it can be copied or reduced/encoded into a corresponding output element that is part of the media asset proxy. Accordingly, the media asset proxy can be created as the media asset proxy is parsed. 
     The media asset proxy can have a file size that is substantially less than its corresponding digital media asset. For example, a 60 minute movie file can be reduced from approximately 1.6 GB to approximately 1.9 KB. Similarly, a 10 minute movie file can also be reduced from approximately 270 MB to approximately 1.9 KB. Accordingly, the file size of the media asset proxy can be independent of its digital media asset. The media asset proxy created from the 10 minute movie file has a file size that is substantially equivalent to the media asset proxy created from the 60 minute movie file. Hence, it is easier to manage media asset proxy files than their corresponding digital media assets because the proxy files can be queried at a consistent rate. Conversely, querying a large digital media asset can take substantially longer than a small digital media asset because of the added time to parse the larger file. 
     After the media asset proxy is created at  226 , process  200  concludes at step  228  were it returns to previous processing, which can include repeating process  200 . 
     Turning now to  FIG. 5 , an exemplary file structure of a digital media asset will be discussed in further detail.  FIG. 5  corresponds to a QUICKTIME movie file having a duration of 10 minutes. The “Atom Type” field designates the particular atom (element) that can be identified during the parsing of the file. Furthermore, the hierarchical structure of the file is illustrated by the indentation of each atom type. For example, the ‘moov’ atom contains the ‘mvhd’ atom and two ‘trak’ atoms. Likewise, the first (top) ‘trak’ atom contains a ‘tkhd’ atom, a ‘tapt’ atom, a ‘edts’ atom, and a ‘mdia’ atom, and so forth. 
     The “Action” column identifies how each individual atom will be handled in creating the media asset proxy. An atom designated with the “copy” action will be copied verbatim from the digital media asset to the media asset proxy. An atom designated with the “omit” action will be filtered out and discarded when created the media asset proxy. Atoms that are designated with “encode,” “truncate,” or “recreate” will be processed according to a predetermined algorithm that will reduce the overall size of the atom. The “File Offset” column displays the offset where each atom type is located within the file structure. The “Atom Size” column displays the total size of each atom, which includes the contribution of the atoms that reside inside container atoms. The bottom of the file offset column reflects the total file size for this movie which is approximately 270 MB. 
       FIG. 6  illustrates an exemplary file structure of the media asset proxy that corresponds to the digital media asset illustrated by  FIG. 5 . The media asset proxy in  FIG. 6  results from copying, omitting, and modifying each of the atoms according to the previously discussed actions. Accordingly, the media asset proxy in  FIG. 6  has a total file size of approximately 1.9 KB, reduced from the original 270 MB. 
     Turning now to  FIG. 7 , an exemplary method for using a media asset proxy will be discussed in further detail. Method  700  begins at step  702  and continues to step  704 . At  704 , a search for digital media assets is performed. For example, the search can be performed by a client device that communicates with network resources such as those described in cloud computing system  100 . The device user can search the cloud for a digital media asset such as a movie that was previously uploaded to the cloud from a different client device. 
     At step  706 , the client device downloads the media asset proxy that representing or corresponds to the digital media asset. This download can be performed quickly and efficiently because of the media asset proxy&#39;s significantly smaller file size. Furthermore, the client device need not have significant available space in the device memory to store the media asset proxy. 
     After the media asset proxy is downloaded at step  706 , the method proceeds to step  708  wherein the media asset proxy is queried to determine the properties of the media asset. These properties can include, for example, the title, the file type, the author, copyright, the language, GPS information, the time duration of a movie, the number of audio channels, audio sample rate, video sample rate, video frame height/width, etc. These properties can all be read by software on the device that is configured to inspect or query a file type that corresponds to the digital media asset. Furthermore, querying the media asset proxy on the client device alleviates the processing burden on the cloud infrastructure  120  and the amount of network traffic between the cloud and the client device. In addition, cloud infrastructures can be designed solely for mass storage of digital media assets. 
     After the media asset proxy is queried, the method proceeds to step  710  to determine if the digital media asset&#39;s properties, ascertained from the media asset proxy, are suitable for viewing on the client device. For example, the properties can indicate that the digital media asset&#39;s resolution cannot be properly rendered on the client device&#39;s display. Further, the properties can indicate that the client device does not have an application that is suitable for playing the digital media asset. In each of these cases, the client device will have avoided the time and expense associated with downloading a digital media asset that was not properly compatible with the client device. In some cases, a notification can be provided at the client device indicating that the digital media asset cannot be downloaded and, optionally, why. The method will proceed to step  714  where it returns to previous processing, including repeating method  700 . 
     Alternatively, it can be determined that the properties associated with the digital media asset are compatible with the client device. In this case, the method can proceed to step  712  wherein the digital media asset is downloaded for use on the client device, such as playback. In some embodiments, the client device can download the digital media asset automatically upon determining, via the media asset proxy, that the properties are compatible. Alternatively, the client device can prompt the device user for input as to whether it should proceed to download the digital media asset. The prompt to the device user can contain additional information such as the amount of memory necessary and/or available for downloading the digital media asset and also an estimated amount of time that it will take to download the digital media asset. 
     After the digital media asset is downloaded, method  700  proceeds to step  714  where it returns to previous processing, including repeating method  700 . 
     Although the foregoing discussion focuses on creating and using asset proxy files for digital media assets, the present technology can be applied to any other type of file having a file format that can be similarly parsed for the purpose of extracting and reducing pertinent file data. For example, a ZIP archive contains a central directory with particular elements that can be parsed and processed to create a ZIP archive proxy. The ZIP archive proxy could then be queried similarly to the corresponding ZIP archive for properties such as files present, creation date, compression rate, etc. However, the present technology is not limited to archive files and can be used with any other type of file. 
       FIG. 8A , and  FIG. 8B  illustrate exemplary possible system embodiments. The more appropriate embodiment will be apparent to those of ordinary skill in the art when practicing the present technology. Persons of ordinary skill in the art will also readily appreciate that other system embodiments are possible. 
       FIG. 8A  illustrates a conventional system bus computing system architecture  800  wherein the components of the system are in electrical communication with each other using a bus  805 . Exemplary system  800  includes a processing unit (CPU or processor)  810  and a system bus  805  that couples various system components including the system memory  815 , such as read only memory (ROM)  820  and random access memory (RAM)  825 , to the processor  810 . The system  800  can include a cache of high-speed memory connected directly with, in close proximity to, or integrated as part of the processor  810 . The system  800  can copy data from the memory  815  and/or the storage device  830  to the cache  812  for quick access by the processor  810 . In this way, the cache can provide a performance boost that avoids processor  810  delays while waiting for data. These and other modules can control or be configured to control the processor  810  to perform various actions. Other system memory  815  may be available for use as well. The memory  815  can include multiple different types of memory with different performance characteristics. The processor  810  can include any general purpose processor and a hardware module or software module, such as module 1  832 , module 2  834 , and module 3  836  stored in storage device  830 , configured to control the processor  810  as well as a special-purpose processor where software instructions are incorporated into the actual processor design. The processor  810  may essentially be a completely self-contained computing system, containing multiple cores or processors, a bus, memory controller, cache, etc. A multi-core processor may be symmetric or asymmetric. 
     To enable user interaction with the computing device  800 , an input device  845  can represent any number of input mechanisms, such as a microphone for speech, a touch-sensitive screen for gesture or graphical input, keyboard, mouse, motion input, speech and so forth. An output device  835  can also be one or more of a number of output mechanisms known to those of skill in the art. In some instances, multimodal systems can enable a user to provide multiple types of input to communicate with the computing device  800 . The communications interface  840  can generally govern and manage the user input and system output. There is no restriction on operating on any particular hardware arrangement and therefore the basic features here may easily be substituted for improved hardware or firmware arrangements as they are developed. 
     Storage device  830  is a non-volatile memory and can be a hard disk or other types of computer readable media which can store data that are accessible by a computer, such as magnetic cassettes, flash memory cards, solid state memory devices, digital versatile disks, cartridges, random access memories (RAMs)  825 , read only memory (ROM)  820 , and hybrids thereof. 
     The storage device  830  can include software modules  832 ,  834 ,  836  for controlling the processor  810 . Other hardware or software modules are contemplated. The storage device  830  can be connected to the system bus  805 . In one aspect, a hardware module that performs a particular function can include the software component stored in a computer-readable medium in connection with the necessary hardware components, such as the processor  810 , bus  805 , display  835 , and so forth, to carry out the function. 
       FIG. 8B  illustrates a computer system  850  having a chipset architecture that can be used in executing the described method and generating and displaying a graphical user interface (GUI). Computer system  850  is an example of computer hardware, software, and firmware that can be used to implement the disclosed technology. System  850  can include a processor  855 , representative of any number of physically and/or logically distinct resources capable of executing software, firmware, and hardware configured to perform identified computations. Processor  855  can communicate with a chipset  860  that can control input to and output from processor  855 . In this example, chipset  860  outputs information to output  865 , such as a display, and can read and write information to storage device  870 , which can include magnetic media, and solid state media, for example. Chipset  860  can also read data from and write data to RAM  875 . A bridge  880  for interfacing with a variety of user interface components  885  can be provided for interfacing with chipset  860 . Such user interface components  885  can include a keyboard, a microphone, touch detection and processing circuitry, a pointing device, such as a mouse, and so on. In general, inputs to system  850  can come from any of a variety of sources, machine generated and/or human generated. 
     Chipset  860  can also interface with one or more communication interfaces  890  that can have different physical interfaces. Such communication interfaces can include interfaces for wired and wireless local area networks, for broadband wireless networks, as well as personal area networks. Some applications of the methods for generating, displaying, and using the GUI disclosed herein can include receiving ordered datasets over the physical interface or be generated by the machine itself by processor  855  analyzing data stored in storage  870  or  875 . Further, the machine can receive inputs from a user via user interface components  885  and execute appropriate functions, such as browsing functions by interpreting these inputs using processor  855 . 
     It can be appreciated that exemplary systems  800  and  850  can have more than one processor  810  or be part of a group or cluster of computing devices networked together to provide greater processing capability. 
     For clarity of explanation, in some instances the present technology may be presented as including individual functional blocks including functional blocks comprising devices, device components, steps or routines in a method embodied in software, or combinations of hardware and software. 
     In some embodiments the computer-readable storage devices, mediums, and memories can include a cable or wireless signal containing a bit stream and the like. However, when mentioned, non-transitory computer-readable storage media expressly exclude media such as energy, carrier signals, electromagnetic waves, and signals per se. 
     Methods according to the above-described examples can be implemented using computer-executable instructions that are stored or otherwise available from computer readable media. Such instructions can comprise, for example, instructions and data which cause or otherwise configure a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. Portions of computer resources used can be accessible over a network. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, firmware, or source code. Examples of computer-readable media that may be used to store instructions, information used, and/or information created during methods according to described examples include magnetic or optical disks, flash memory, USB devices provided with non-volatile memory, networked storage devices, and so on. 
     Devices implementing methods according to these disclosures can comprise hardware, firmware and/or software, and can take any of a variety of form factors. Typical examples of such form factors include laptops, smart phones, small form factor personal computers, personal digital assistants, and so on. Functionality described herein also can be embodied in peripherals or add-in cards. Such functionality can also be implemented on a circuit board among different chips or different processes executing in a single device, by way of further example. 
     The instructions, media for conveying such instructions, computing resources for executing them, and other structures for supporting such computing resources are means for providing the functions described in these disclosures. 
     Although a variety of examples and other information was used to explain aspects within the scope of the appended claims, no limitation of the claims should be implied based on particular features or arrangements in such examples, as one of ordinary skill would be able to use these examples to derive a wide variety of implementations. Further and although some subject matter may have been described in language specific to examples of structural features and/or method steps, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to these described features or acts. For example, such functionality can be distributed differently or performed in components other than those identified herein. Rather, the described features and steps are disclosed as examples of components of systems and methods within the scope of the appended claims. 
     As used herein, the terms “substantially,” “approximately,” or “the like” shall mean being within 20% of the stated value, measurement, dimension or property. The word “exemplary” is used herein to mean “serving as an example or illustration.” Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs.