Method and system for media item attachment
Through the media attachment system, users can efficiently distribute and present multimedia content between client devices, and realize embedding and attachment between media items, solving the shortcomings of multimedia content distribution and interactive experience in the prior art, and achieving richer user interaction.
Patent Information
- Application Number
- CN202211347996.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2017-02-20
- Filing Date
- 2018-02-20
- Publication Date
- 2025-04-29
- Estimated Expiration
- 2038-02-20
AI Technical Summary
The prior art is difficult to efficiently distribute and present multimedia content between client devices, and it is difficult to implement embedding and attachment between media items, limiting the user's interactive experience in the messaging system.
Using a media attachment system, the user can embed the second media item to the first media item by linking and display a representative graphic icon of the second media item on the client device, and the user can access and present the second media item by selecting the icon.
It realizes the ability to efficiently distribute and present multimedia content between client devices, enhances the user's interactive experience in the messaging system, and provides richer media item embedding and attachment functions.
Smart Images

Figure CN115695362B_ABST
Abstract
Description
[0001] This application is a divisional application of a patent application with an application date of February 20, 2018, application number 201880012539.5, and invention name “Media Item Attachment System”.
[0002] Priority application
[0003] This application is a continuation of and claims priority to U.S. Patent Application Serial No. 15 / 437,022, filed on February 20, 2017, the disclosure of which is incorporated herein by reference in its entirety. Technical Field
[0004] Embodiments of the present disclosure relate generally to mobile computing techniques and, more particularly, but not limited to, to presentation of media items at a client device. Background Art
[0005] Current systems enable the distribution of media content between client devices. For example, Multimedia Messaging Service (MMS) is a standard way to send messages including multimedia content to and from mobile phones over a cellular network. MMS can transmit a variety of media, including video content, images, slide shows of multiple images, or audio. BRIEF DESCRIPTION OF THE DRAWINGS
[0006] To easily identify the discussion of any particular element or action, the most significant digit or digits in a reference number refer to the figure number that first introduces the element.
[0007] Figure 1 is a block diagram illustrating an example messaging system for exchanging data (eg, messages and associated content) over a network, wherein the messaging system includes an attachment system, according to some embodiments.
[0008] Figure 2 is a block diagram showing further details regarding a messaging system according to an example embodiment.
[0009] Figure 3 is a schematic diagram illustrating data that may be stored in a database of a messaging server system according to certain example embodiments.
[0010] Figure 4 is a schematic diagram illustrating the structure of a message generated by a messaging client application for communication according to some embodiments.
[0011] Figure 5is a schematic diagram illustrating an example access restriction process according to some embodiments, in which access to content (e.g., an ephemeral message and associated multimedia data payload) or a collection of content (e.g., an ephemeral message story) may be time-restricted (e.g., to make it ephemeral).
[0012] Figure 6 is a block diagram illustrating various modules of an attachment system according to certain example embodiments.
[0013] Figure 7 is a flow diagram illustrating various operations of an attachment system in attaching a second media item to a first media item, according to certain example embodiments.
[0014] Figure 8 is a diagram illustrating various operations of an attachment system in performing a method of causing a second media item to be displayed within a presentation of a first media item, according to certain example embodiments.
[0015] Fig. 9 is a diagram illustrating various operations of an attachment system in performing a method of causing a second media item to be displayed within a presentation of a first media item, according to certain example embodiments.
[0016] Fig.10 is a diagram illustrating various operations of an attachment system in performing a method of receiving a selection of a media item to attach to a first media item, according to certain example embodiments.
[0017] Fig.11 is a diagram illustrating various interfaces for attaching a second media item to a first media item, according to some example embodiments.
[0018] Fig.12 is a block diagram illustrating a representative software architecture that may be incorporated into the various hardware architectures described herein and used to implement the various embodiments.
[0019] Fig.13 is a block diagram illustrating components of a machine capable of reading instructions from a machine-readable medium (eg, a machine-readable storage medium) and performing any one or more of the methodologies discussed herein, according to some example embodiments. DETAILED DESCRIPTION
[0020] Reference will now be made in detail to specific example embodiments for implementing the inventive subject matter of the present disclosure. In the following description, specific details are set forth in order to provide a thorough understanding of the subject matter. It is understood that embodiments may be practiced without some or all of these specific details.
[0021] A media attachment system is disclosed to enable a user to embed a first media item with a link of a second media item and distribute the first media item in a message to one or more receiving client devices. For example, the first media item can include a picture or video collected by the user at a client device. The user can generate a message including the first media item. In response, the media attachment system can cause an interface to be displayed at the client device, which includes an option to attach the address of the second media item to the message. For example, the second media item can include a web page, a social media post, a picture, or a video identified by an address such as a uniform resource locator (URL).
[0022] In response to receiving a selection of the second media item, the media attachment system assigns the address of the second media item to the first media item. The second client device may receive a message including the first media item, and in response, the media attachment system may generate and cause a presentation of the message to be displayed at the second client device. The presentation of the message may include a graphical icon representing the second media item.
[0023] In response to receiving a selection of the graphical icon via user input into the second client device, the media attachment system retrieves the second media item based on the address (e.g., URL) and generates a presentation of the second media item within the presentation of the first media item. For example, the media attachment system may cause a browser window to be displayed within the presentation of the first media item and navigate the browser window to the URL of the second media item.
[0024] In some example embodiments, the media attachment system generates a representation of the second media item in response to receiving a selection of the graphic icon. For example, the media attachment system can access the address of the second media item to obtain the second media item. When obtaining the second media item, the media attachment system generates a representation of the second media item, such as a screenshot of the second media item. A screenshot is an image used to record a visible item displayed on a monitor, display, television, or other visual output device in use. Typically, this is a digital image using an operating system or software running on a computer, but it can also be a collection performed by a camera or a device that captures the video output of a display. The media attachment system causes the representation of the second media item to be displayed within the presentation of the first media item. In a further embodiment, the media attachment system generates a representation of the second media item using the content of the second media item. For example, the media attachment system identifies an image from the second media item for representing the second media item (e.g., based on metadata of the second media item indicating an image associated with the title of the second media item). In this way, the media attachment system generates a representation of the second media item representing the content of the second media item.
[0025] Consider an illustrative example from the user's perspective. A user at a first client device generates media content (e.g., a digital video) to attach to a message of a second client device. In response to attaching the media content on top of the message, the media attachment system prompts the user to assign the address of the second media content to the message. For example, the media attachment system may cause an interface including a search window to be displayed to receive a search request. The user may provide keywords to the search window, and in response, the media attachment system retrieves and causes a set of search results to be displayed. The set of search results includes media content, such as pictures, videos, social media posts, and web pages.
[0026] The user may select second media content (e.g., a web page identified by a URL) from the set of search results. In response to receiving the selection of the second media content, the media attachment system generates a graphical icon (e.g., a logo associated with the web page) representing the second media content. In some example embodiments, the graphical icon may indicate the type of the second content (e.g., picture, video, web page, social media post), while in other embodiments, the graphical icon may include a single generic icon (e.g., arrow, star) for all media content types.
[0027] The user may send a message including first media content (e.g., a digital video) to a second client device. In response, the media attachment system generates and causes a notification to be displayed at the second client device. In response to receiving a selection of the notification, the media attachment system generates and causes a presentation of the first media item to be displayed at the second client device, wherein the presentation includes a graphical icon representing the second media content (e.g., a web page).
[0028] In response to receiving a selection of the graphical icon, the media attachment system generates and causes display of a browser window within the presentation of the first media content and navigates the browser window to the web page identified by the URL.
[0029] Figure 1 1 is a block diagram illustrating an example messaging system 100 for exchanging data (e.g., messages and associated content) over a network. The messaging system 100 includes a plurality of client devices 102, each of which hosts a plurality of applications including a messaging client application 104. Each messaging client application 104 is communicatively coupled to other instances of the messaging client application 104 and a messaging server system 108 via a network 106 (e.g., the Internet).
[0030] Thus, each messaging client application 104 is able to communicate and exchange data with another messaging client application 104 and the messaging server system 108 via the network 106. The data exchanged between the messaging client applications 104 and between the messaging client applications 104 and the messaging server system 108 includes functions (e.g., commands to call functions) and payload data (e.g., text, audio, video, or other multimedia data that may include a message or be included in a message).
[0031] The messaging server system 108 provides server-side functionality to specific messaging client applications 104 via the network 106. Although certain functions of the messaging system 100 are described herein as being performed by the messaging client application 104 or by the messaging server system 108, it is understood that the location of certain functions within the messaging client application 104 or the messaging server system 108 is a design choice. For example, it may be technically preferable to initially deploy certain technologies and functions within the messaging server system 108, but later migrate the technologies and functions to the messaging client application 104 where the client device 102 has sufficient processing power.
[0032] The messaging server system 108 supports various services and operations provided to the messaging client applications 104. Such operations include sending data to the messaging client applications 104, receiving data from the messaging client applications 104, and processing data generated by the messaging client applications 104. In some embodiments, the data includes, for example, message content, client device information, geographic location information, media annotations and overlays, message content persistence conditions, social network information, and live event information. In other embodiments, other data is used. According to the different embodiments described herein, any such data can be used as part of anamorphic media or used to generate anamorphic media. The data exchange within the messaging system 100 is called and controlled via the functions available to the user interface (UI) of the messaging client applications 104.
[0033] Turning now to the messaging server system 108, an application program interface (API) server 110 is coupled to and provides a programming interface to an application server 112. The application server 112 is communicatively coupled to a database server 118, which facilitates access to a database 120 in which data associated with messages processed by the application server 112 is stored.
[0034] Specifically, the application program interface (API) server 110 receives and sends message data (e.g., commands and message payloads) between the client device 102 and the application server 112. Specifically, the application program interface (API) server 110 provides a set of interfaces (e.g., routines and protocols) that can be called or queried by the messaging client application 104 in order to invoke the functions of the application server 112. The application program interface (API) server 110 exposes various functions supported by the application server 112, including account registration, login functionality, sending messages from a particular messaging client application 104 to another messaging client application 104 via the application server 112, sending media files (e.g., images or videos) from a messaging client application 104 to a messaging server application 114, and for possible access by another messaging client application 104, setting up collections of media data (e.g., stories), retrieving a list of friends of a user of a client device 102, retrieving such collections, retrieving messages and content, adding and removing friends from a social graph, friends' positions within a social graph, and open and application events (e.g., related to a messaging client application 104).
[0035] The application server 112 hosts multiple applications and subsystems, including a messaging server application 114, an image processing system 116, a social networking system 122, and an attachment system 124. The messaging server application 114 implements a variety of message processing techniques and functions, particularly techniques and functions related to aggregation and other processing of content (e.g., text and multimedia content) included in messages received from multiple instances of the messaging client application 104. As will be described in further detail, text and media content from multiple sources can be aggregated into content collections (e.g., called stories or galleries). These collections are then made available to the messaging client applications 104 by the messaging server application 114. In view of the hardware requirements for such processing, other processor- and memory-intensive data processing can also be performed on the server side by the messaging server application 114.
[0036] The application server 112 also includes an image processing system 116 that is dedicated to performing various image processing operations, typically with respect to images or videos received within the payload of messages at the messaging server application 114 .
[0037] The social networking system 122 supports various social networking functional services and makes these functionalities and services available to the messaging server application 114. To this end, the social networking system 122 maintains and accesses an entity graph 304 within the database 120. Examples of functionalities and services supported by the social networking system 122 include identification of other users in the messaging system 100 who have relationships with a particular user or who a particular user "follows," as well as identification of other entities and followings of a particular user. The attachment system 124 provides functionality to identify and enable personalization of the appearance of identified typography in the presentation of an image at a client device (e.g., the client device 102).
[0038] The application servers 112 are communicatively coupled to one or more database servers 118 , which facilitate access to databases 120 in which data associated with messages processed by the messaging server application 114 is stored.
[0039] Figure 2 1 is a block diagram showing further details about the messaging system 100 according to an example embodiment. Specifically, the messaging system 100 is shown to include a messaging client application 104 and an application server 112, which in turn embodies a plurality of subsystems, namely a short timer system 202, a collection management system 204, and an annotation system 206.
[0040] The short-term timer system 202 is responsible for implementing temporary access to content permitted by the messaging client application 104 and the messaging server application 114. To this end, the short-term timer system 202 includes a plurality of timers that selectively display and enable access to messages and associated content (such as transformed media) via the messaging client application 104 based on duration and display parameters associated with the message or a collection of messages (e.g., a SNAPCHAT story). Further details regarding the operation of the short-term timer system 202 are provided below.
[0041] The collection management system 204 is responsible for managing media collections (e.g., collections of text, image video, and audio data). In some examples, collections of content (e.g., messages, including personalized layouts, images, videos, text, and audio) can be organized into "event libraries" or "event stories". Such collections can be available within a specified time period (such as the duration of the event to which the content relates). For example, content such as media items embedded with links to other media items (such as links to web pages) can be available as "stories" over a period of time. The collection management system 204 can also be responsible for publishing icons that provide notifications of the existence of a particular collection to the user interface of the messaging client application 104.
[0042] The collection management system 204 further includes a curation interface 208 that allows a collection manager to manage and curate a particular collection of content. For example, the curation interface 208 enables an event organizer to curate a collection of content related to a particular event (e.g., to remove inappropriate content or redundant messages). In addition, the collection management system 204 employs machine vision (or image recognition technology) and content rules to automatically curate content collections. In some embodiments, users may be paid to include user-generated content in a collection. In such cases, the curation interface 208 operates to automatically pay such users for use of their content.
[0043] The annotation system 206 provides various functions that enable users to annotate or otherwise modify or edit media content associated with a message. For example, the annotation system 206 provides functions related to the generation and publication of media overlays of messages processed by the messaging system 100. The annotation system 206 is operable to provide a media overlay (e.g., a SNAPCHAT filter) to the messaging client application 104 based on the geographic location of the client device 102. In another example, the annotation system 206 is operable to provide a media overlay to the messaging client application 104 based on other information such as social network information of the user of the client device 102. The media overlay may include audio and visual content and visual effects. Examples of audio and visual content include social media posts, web pages, pictures, text, logos, animations, and sound effects. Examples of visual effects include color overlays, or projecting deformed media items on a presentation depicting space. Audio and visual content or visual effects can be applied to media content items (e.g., images or videos) at the client device 102. For example, the media overlay includes text that can be overlaid on a photo or video stream generated by the client device 102. In another example, the media overlay includes an identification of a location overlay (e.g., Venice Beach), the name of a live event, or the name of a business overlay (e.g., Beach Cafe). In another example, the annotation system 206 uses the geographic location of the client device 102 to identify a media overlay that includes the name of a business at the geographic location of the client device 102. The media overlay may include other tags associated with the business. The media overlay may be stored in the database 120 and accessed through the database server 118.
[0044] In one example embodiment, the annotation system 206 provides a user-based publishing platform that enables users to select a geographic location on a map and upload content associated with the selected geographic location. Users can also specify the context in which a particular media overlay should be provided to other users. The annotation system 206 generates a media overlay including the uploaded content and associates the uploaded content with the selected geographic location.
[0045] In another example embodiment, the annotation system 206 provides a merchant-based publishing platform that enables merchants to select specific media coverage associated with a geographic location via a bidding process. For example, the annotation system 206 associates the media coverage of the highest bidding merchant with the corresponding geographic location for a predefined amount of time.
[0046] Figure 3 is a schematic diagram illustrating data that may be stored in database 120 of messaging server system 108 according to certain example embodiments. Although the contents of database 120 are illustrated as including a plurality of tables, it is understood that data may be stored in other types of data structures (e.g., as an object-oriented database).
[0047] The database 120 includes message data stored in a message table 314. The entity table 302 stores entity data, including an entity graph 304. The entities for which records are maintained in the entity table 302 may include individuals, corporate entities, organizations, objects, places, events, etc. Regardless of the type, any entity associated with which the messaging server system 108 stores data may be a recognized entity. Each entity is provided with a unique identifier, as well as an entity type identifier (not shown).
[0048] The entity graph 304 additionally stores information about relationships and associations between entities. For example only, such relationships may be social relationships, relationships based on professional (e.g., working in a common company or organization) interests, or relationships based on activities.
[0049] The database 120 also stores annotation data (e.g., in the form of filters) in the annotation table 312. The filters whose data are stored in the annotation table 312 are associated with videos (whose data are stored in the video table 310) and / or images (whose data are stored in the image table 308) and applied to the videos and / or images. In one example, a filter is an overlay displayed as an overlay on an image or video during presentation to a recipient user. For example, an overlay may include a graphical icon representing a media item (such as a web page). The filter may be of various types, including a user-selected filter from a gallery of filters presented to a sending user by the messaging client application 104 when the sending user writes a message. Other types of filters include geographic location filters (also referred to as geographic filters), which may be presented to a sending user based on a geographic location. For example, based on geographic location information determined by a GPS unit of a client device 102, a messaging client application 104 may present a geographic location filter specific to a neighborhood or a particular location within a user interface. Another type of filter is a data filter, which can be selectively presented to the sending user by the messaging client application 104 based on other input or information collected during the message creation process by the client device 102. Examples of data filters include the current temperature at a particular location, the current speed the sending user is traveling, the battery life of the client device 102, or the current time.
[0050] Other annotation data that may be stored in the image table 308 is so-called "shot" data. A "shot" may be real-time special effects and sounds that may be added to an image or video.
[0051] As described above, the video table 310 stores video data associated with messages in which records are maintained within the message table 314. Similarly, the image table 308 stores image data associated with messages in which message data is stored in the entity table 302. The entity table 302 may associate various annotations from the annotation table 312 with various images stored in the image table 308 and various videos in the video table 310.
[0052] The story table 306 stores data about a collection of messages and associated images, video, or audio data, which are compiled into a collection (e.g., a SNAPCHAT story or gallery). The creation of a particular collection can be initiated by a particular user (e.g., each user for whom a record is maintained in the entity table 302). A user can create a "personal story" in the form of a collection of content created and sent / broadcasted by that user. To this end, the user interface of the messaging client application 104 can include a user-selectable icon to enable the sending user to add specific content to his or her personal story.
[0053] A collection may also constitute a "live story," which is a collection of content from multiple users that is created manually, automatically, or using a combination of manual and automatic techniques. For example, a "live story" may constitute a curated stream of user-submitted content from different locations and events. For example, a user whose client device has location services enabled and who is at a public location event at a particular time may be presented with an option via the user interface of the messaging client application 104 to contribute content to a particular live story. Live stories may be identified to a user by the messaging client application 104 based on his or her location. The end result is a "live story" told from a community perspective.
[0054] Another type of content collection is called a "location story," which enables users whose client devices 102 are located in a particular geographic location (e.g., on a college or university campus) to contribute to a particular collection. In some embodiments, contributions to location stories may require a second degree of authentication verifying that the end user belongs to a particular organization or other entity (e.g., is a student on a university campus).
[0055] Figure 4 is a schematic diagram illustrating the structure of a message 400 generated by a messaging client application 104 for communicating with another messaging client application 104 or a messaging server application 114 according to some embodiments. The content of a particular message 400 is used to populate a message table 314 stored in a database 120 that is accessible by a messaging server application 114. Similarly, the content of the message 400 is stored in memory as "in-flight" or "in-flight" data of a client device 102 or application server 112. The message 400 is shown to include the following components:
[0056] Message identifier 402 : a unique identifier that identifies the message 400 .
[0057] Message text payload 404 : text generated by a user via the user interface of the client device 102 and included in the message 400 .
[0058] Message image payload 406 : image data captured by a camera component of the client device 102 or retrieved from a memory of the client device 102 and included in the message 400 .
[0059] Message video payload 408 : video data captured by a camera component or retrieved from a memory component of the client device 102 and included in the message 400 .
[0060] Message audio payload 410 : audio data captured by a microphone or retrieved from a memory component of the client device 102 and included in the message 400 .
[0061] Message annotation 412: Annotation data (eg, filter, sticker, or other enhancement) representing an annotation to be applied to the message image payload 406, message video payload 408, or message audio payload 410 of the message 400.
[0062] Message duration parameter 414: A parameter value indicating the amount of time in seconds that the message content (eg, message image payload 406, message video payload 408, message audio payload 410) will be presented to or accessible to the user via the messaging client application 104.
[0063] Message geolocation parameters 416: Geolocation data (e.g., latitude and longitudinal coordinates) associated with the content payload of the message. Multiple message geolocation parameter 416 values may be included in the payload, with each of these parameter values being associated with a content item included in the content (e.g., a specific image within a message image payload 406, or a specific video within a message video payload 408).
[0064] Message story identifier 418: An identifier value that identifies one or more content collections (e.g., "stories") associated with a particular content item in message image payload 406 of message 400. For example, multiple images within message image payload 406 may each be associated with multiple content collections using an identifier value.
[0065] Message tags 420: Each message 400 may be tagged with a plurality of tags, each tag indicating the subject of the content included in the message payload. For example, where a particular image included in the message image payload 406 depicts an animal (e.g., a lion), a tag value may be included within the message tags 420 indicating the relevant animal. The tag values may be manually generated based on user input, or may be automatically generated using, for example, image recognition.
[0066] • Message sender identifier 422: An identifier (eg, a messaging system identifier, an email address, or a device identifier) that indicates the user of the client device 102 from which the message 400 was generated and sent.
[0067] • Message recipient identifier 424: Indicates an identifier (eg, a messaging system identifier, an email address, or a device identifier) of the user of the client device 102 to which the message 400 is addressed.
[0068] The content (e.g., values) of the various components of message 400 may be pointers to locations in a table where the content data values are stored. For example, the image value in message image payload 406 may be a pointer to a location (or its address) within image table 308. Similarly, the value within message video payload 408 may point to data stored within video table 310, the value stored within message annotation 412 may point to data stored in annotation table 312, the value stored within message story identifier 418 may point to data stored in story table 306, and the values stored within message sender identifier 422 and message recipient identifier 424 may point to user records stored within entity table 302.
[0069] Figure 5 5 is a schematic diagram illustrating an access restriction process 500 in which access to content (e.g., a short message 502 and an associated multimedia payload including data of a media item embedded in another media item) or a collection of content (e.g., a short message story 504) may be time-limited (e.g., short-lived). For example, the short message 502 may include a variant media item that may be displayed within a time period specified by a story timer 514.
[0070] The short message 502 is shown to be associated with a message duration parameter 506, the value of which determines the amount of time that the messaging client application 104 displays the short message 502 to the receiving user of the short message 502. In one embodiment, where the messaging client application 104 is a SNAPCHAT application client, the short message 502 can be viewed by the receiving user for up to 10 seconds, depending on the amount of time specified by the sending user using the message duration parameter 506.
[0071] The message duration parameter 506 and the message receiver identifier 424 are shown as inputs to a message timer 512, which is responsible for determining the amount of time that the short message 502 is shown to the specific receiving user identified by the message recipient identifier 424. In particular, the short message 502 will only be shown to the relevant receiving user for a period of time determined by the value of the message duration parameter 506. The message timer 512 is shown as providing an output for a more general short time timer, which is responsible for the overall timing of displaying content (e.g., short message 502) to the receiving user.
[0072] exist Figure 5502 is to be included in a message story 504 (e.g., a personal SNAPCHAT story or an event story). The message story 504 has an associated story duration parameter 508, the value of which determines the duration for which the message story 504 is presented and accessible to users of the messaging system 100. The story duration parameter 508 may be, for example, the duration of a concert, wherein the message story 504 is a collection of content related to the concert. Alternatively, a user (owner user or curator user) may specify a value for the story duration parameter 508 when performing setup and creation of the message story 504.
[0073] In addition, each short message 502 within the short message story 504 has an associated story engagement parameter 510, the value of which determines the duration for which the short message 502 will be accessible within the context of the short message story 504. Thus, a particular short message story 504 may "expire" and become inaccessible within the context of the short message story 504 before the short message story 504 itself expires according to the story duration parameter 508. The story duration parameter 508, the story engagement parameter 510, and the message recipient identifier 424 each provide input to the story timer 514, which first operatively determines whether a particular short message 502 of the short message story 504 will be displayed to a particular receiving user, and if so, how long to display it. Note that as a result of the message recipient identifier 424, the short message story 504 also knows the identity of the particular receiving user.
[0074] Thus, the story timer 514 is operable to control the overall lifespan of the associated short message story 504, as well as the individual short messages 502 included in the short message story 504. In one embodiment, each and all short messages 502 within the short message story 504 remain visible and accessible for the period of time specified by the story duration parameter 508. In another embodiment, a certain short message 502 may expire based on the story engagement parameter 510 within the context of the short message story 504. Note that the message duration parameter 506 may also determine the duration for which a particular short message 502 is displayed to a receiving user, even within the context of the short message story 504. Thus, the message duration parameter 506 determines the duration for which a particular short message 502 is displayed to a receiving user, regardless of whether the receiving user views the short message 502 within or outside the context of the short message story 504.
[0075] The short timer system 202 may also be operable to remove a particular short message 502 from a short message story 504 based on a determination that it has exceeded an associated story engagement parameter 510. For example, when a sending user has established a story engagement parameter 510 of 24 hours from posting, the short timer system 202 will remove the associated short message 502 from the short message story 504 after the designated 24 hours. The short timer system 202 also operates to remove a short message story 504 when the story engagement parameter 510 of each and all short messages 502 within the short message story 504 has expired, or when the short message story 504 itself has expired according to the story duration parameter 508.
[0076] In some use cases, the creator of a particular short message story 504 may specify an indefinite story duration parameter 508. In this case, the expiration of the story engagement parameter 510 for the last remaining short message 502 within the short message story 504 will determine when the short message story 504 itself expires. In this case, a new short message 502 with a new story engagement parameter 510 added to the short message story 504 effectively extends the life of the short message story 504 to a value equal to the story engagement parameter 510.
[0077] In response to the short timer system 202 determining that the short message story 504 has expired (e.g., is no longer accessible), the short timer system 202 communicates with the messaging system 100 (and, for example, in particular the messaging client application 104) so that the indicia (e.g., icon) associated with the relevant short message story 504 is no longer displayed within the user interface of the messaging client application 104. Similarly, when the short timer system 202 determines that the message duration parameter 506 of a particular short message 502 has expired, the short timer system 202 causes the messaging client application 104 to no longer display the indicia (e.g., icon or text identification) associated with the short message 502.
[0078] Figure 6 6 is a block diagram 600 illustrating components of an attachment system 124 according to various example embodiments, which configures the attachment system 124 to embed a first media item with a link to a second media item (e.g., a web page). The attachment system 124 is shown as including a media generation module 602, a rendering module 604, and an attachment module 606, all or some of which are configured to communicate with each other (e.g., via a bus, shared memory, or switch). Any one or more of these modules may be implemented using one or more processors 608 (e.g., by configuring such one or more processors to perform the functions described for the module), and thus may include one or more of the processors 608.
[0079] Any one or more modules described may be implemented using separate hardware (e.g., one or more processors 608 of a machine), or a combination of hardware and software. For example, any module of the described attachment system 124 may physically include an arrangement of one or more processors 608 configured to perform the operations described herein for the module (e.g., a subset of one or more processors of a machine). As another example, any module of the typesetting personalization 124 may include software, hardware, or both, which configures an arrangement of one or more processors 608 (e.g., in one or more processors of a machine) to perform the operations described herein for the module. Therefore, different modules of the attachment system 124 may include and configure different arrangements of such processors 608 or a single arrangement of such processors 608 at different points in time. In addition, any two or more modules of the attachment system 124 may be combined into a single module, and the functions described herein for a single module may be subdivided into multiple modules. In addition, according to various example embodiments, the modules implemented within a single machine, database, or device described herein may be distributed across multiple machines, databases, or devices.
[0080] Figure 7 1 is a flowchart illustrating various operations of the attachment system 124 in performing a method 700 for embedding first media content with a link to second media content according to some example embodiments. The operations of the method 700 may be described above with reference to Figure 6 The module described is executed. Figure 7 As shown in , method 700 includes one or more operations 702 , 704 , 706 , 708 , 710 , 712 , and 714 .
[0081] Operation 702 may be performed by media generation module 602. At operation 702, media generation module 602 generates a data object (e.g., a message) that includes a first media item (e.g., an image or video). For example, a user of first client device 102 may capture or record an image or video and attach the image or video to a message to be sent to a second client device (or multiple client devices).
[0082] Operations 704 and 706 may be performed by the rendering module 604. At operation 704, the rendering module 604 generates and causes an interface to be displayed in response to the media generation module 602 generating a data object, the interface including an option to assign a second media item to a first media item. In some instances, multiple media items (e.g., multiple URLs represented by one or more graphical icons) are assigned to the first media item. In some example embodiments, the interface may include a search window for receiving a search request. A user of the client device 102 may provide user input including a search query (e.g., a keyword or search term) into the interface. In response to receiving the search query, the rendering module 604 obtains and displays one or more search results within the interface. For example, a user may provide a search query, and in response, the rendering module 604 may obtain one or more search results including a web page. In a further example embodiment, the rendering module 604 ranks the search results according to a relevance metric. In various example embodiments, the relevance metric indicates how the search results are related to the search query or how the search results are related to the first media item (e.g., based on an image, emoticon, or text included in the first media item).
[0083] At operation 706, the presentation module 604 receives user input selecting a second media item from the set of search results through a client device (e.g., client device 102). For example, the second media item may include a web page. In response to receiving the selection of the second media item, the attachment module 608 assigns an address (e.g., a URL) of the second media item to the data object generated by the media generation module 602.
[0084] Assigning the address of the second media item to the first media item includes attaching a graphical icon representing the second media item to the first media item. The graphical icon may be linked to the address of the second media item (e.g., a URL to a webpage) such that interaction with the graphical icon causes the browser to display the second media item (e.g., a webpage). In some example embodiments, the graphical icon may be generated based on attributes of the second media item. Attributes may include media types (e.g., pictures, videos, social media posts, webpages, audio, etc.).
[0085] Operation 710 may be performed by rendering module 604. At operation 710, rendering module 604 causes a rendering of a second media item to be displayed. For example, a message (which includes a first media item) may be transmitted by a first client device to one or more receiving devices (including a second client device). In response to the second client device receiving the message, rendering module 604 causes the second media item to be displayed at the second client device. The rendering of the second media item may include a graphical icon representing the second media item.
[0086] At operation 712, the presentation module 604 receives a selection of the graphical icon via the second client device. For example, the graphical icon may be configured to receive user input via a touch-enabled device. The input may include an upward or downward swipe gesture. In response to receiving the selection of the graphical icon, at operation 714, the presentation module 604 causes the second media item to be displayed within the presentation of the first media item.
[0087] In some example embodiments, in response to receiving a selection of the graphical icon, the presentation module 604 retrieves the second media item based on the address. For example, the presentation module 604 may access a web page based on the URL to retrieve and cause the second media item to be displayed within the presentation of the first media item. In some example embodiments, the second media item may be presented within the presentation of the first media item for a period of time determined based on the short timer system 202. For example, the second media item may be available for viewing by the presentation module 604 only during a period of time (e.g., between the hours of 6:00 p.m. and 8:00 p.m. Pacific Time on February 4), a duration of time (e.g., 30 seconds), or when the second client device (e.g., client device 102) is within the geographic area.
[0088] Figure 8 800 to attach a data object including a first media item embedded with a second media item to a message from a first client device to a second client device. The operations of method 800 may be described above with reference to Figure 6 The module described is executed. Figure 8 As shown in , method 800 includes one or more operations 802 , 804 , and 806 , which may be performed as part of method 700 (eg, a precursor, a subroutine).
[0089] At operation 802, the media generation module 602 receives a request to attach a data object to a message through a first client device. A user of the first client device can generate a message to a second client device and attach a data object to the message. For example, the data object can include a first media item, such as an image captured by the user, and the message can include a short message.
[0090] At operation 804, the second client device receives the message from the first client device. In some example embodiments, the presentation module 604 generates and causes display of a notification at the second client device in response to detecting that the second client device received the message.
[0091] At operation 806, the presentation module 604 causes a presentation of the first media item to be displayed at the second client device. The presentation of the first media item may include display of the first media item within a graphical user interface displayed at the second client device, and may include a graphical icon representing the second media item at a location within the presentation. The graphical icon may be interactive such that a user may touch or slide the graphical icon to cause the second media item to be displayed within the presentation.
[0092] Fig. 9 1 is a flowchart illustrating various operations of the attachment system 124 in performing a method 900 for causing a second media item to be displayed within a presentation of a first media item according to some example embodiments. The operations of the method 900 may be described above with reference to Figure 6 The module described is executed. Fig. 9 As shown in , method 900 includes one or more operations 902 , 904 , 906 , and 908 , which may be performed as part of method 700 (eg, a precursor, a subroutine).
[0093] At operation 902, the presentation module 604 accesses a URL associated with the second media item in response to receiving a selection of a graphical icon representing a second media item within a presentation of a first media item. For example, a user of the second client device may provide user input through the graphical icon, including a touch, swipe, or tap gesture. In response to receiving the user input, the presentation module 604 accesses a URL associated with the second media item to obtain the second media item.
[0094] At operation 904, the presentation module 604 retrieves the second media item from the URL. For example, the second media item may include a web page or social media post hosted at the URL and available over a network.
[0095] At operation 906, the rendering module 604 generates a representation of the second media item in response to obtaining the second media item from the URL. In some example embodiments, at operation 908, the rendering module 604 causes a browser window to be displayed within the presentation of the first media item and navigates the browser window to the URL to display the second media item. In further embodiments, the rendering module 604 accesses the URL to obtain the second media item and generates a screenshot of the second media item, and displays the screenshot of the second media item within the presentation of the first media item.
[0096] Fig.10 1 is a flowchart illustrating various operations of the attachment system 124 in performing a method 1000 of causing a set of search results to be displayed and receiving a selection of a second media item according to some example embodiments. The operations of the method 1000 may be described above with reference to Figure 6 The module described is executed. Fig.10As shown in , method 1000 includes one or more operations 1002 , 1004 , and 1006 , which may be performed as part of method 700 (eg, a precursor, a subroutine).
[0097] At operation 1002, the presentation module 604 receives a search request via a search window displayed at the client device 102. The search request may include user input into the interface such as a text or audio query (e.g., a keyword or search term). For example, a user of the client device 102 may speak into a microphone of the client device 102 to provide a search query, or may simply enter the search query as a text string into the search window.
[0098] In response to receiving the search query, the presentation module 604 retrieves and displays one or more search results within the interface at operation 1004. For example, a user may provide a search query, and in response, the presentation module 604 may retrieve one or more search results including web pages.
[0099] At operation 1006, the presentation module 604 receives a selection of a second media item from the one or more search results. In response to receiving the selection of the second media item, the presentation module 604 retrieves an address (eg, a URL) of the second media item and assigns the address to the data object.
[0100] Fig.11 11 is a diagram showing various interfaces 1100 for attaching a second media item to a first media item according to some example embodiments. The various interfaces 1100 include a first media item 1110 (as seen in interface 1102), a search interface 1104, and a second media item 1112 (as seen in interface 1106).
[0101] The first media item 1110 depicted in the interface 1102 may include image or video data captured by a camera associated with the client device 102, as well as image data obtained through a network or received by the client device 102 in a message. Figure 7 After acquiring the media item 1110, the presentation module 604 may generate and cause display of an interface 1102 at the client device 102, wherein the interface 1102 includes one or more interface elements 1118 to manipulate or otherwise change the first media item 1110. In some example embodiments, as described above, the one or more interface elements may include an option to assign a second media item (second media item 1112) to the first media item 1110. For example, upon acquiring (or receiving) the first media item 1110, the presentation module 602 may generate and cause display of the one or more interface elements 1118.
[0102] like Fig.10 As discussed in operation 1002 of , in response to the user selecting the option to attach the second media item to the first media item from one or more interface elements 1118, the presentation module 604 generates and causes display of a search interface 1104. The search interface 1104 includes a search bar in which the user can enter a search query (e.g., a text string). For example, the user can provide a search query in the search interface 1104, and in response, the presentation module 602 can obtain and present a set of search results 1114. In some example embodiments, the presentation module 602 can additionally obtain one or more media items that were previously attached to the media item in the message by the user.
[0103] The interface 1106 includes a presentation of a second media item 1112. For example, the user can select the second media item 1112 from the set of search results 1114. The presentation module 602 generates and causes a presentation of the second media item 1112 (e.g., content of a website) to be displayed at the client device 102. The presentation of the media item 1112 can include an attachment icon 1108. Figure 7 As discussed in operation 708 of , by selecting the attach icon 1108 , the attach module 606 assigns the address of the second media item 1112 to the first media item 1110 .
[0104] Software Architecture
[0105] Fig.12 is a block diagram illustrating an example software architecture 1206, which may be used in conjunction with the various hardware architectures described herein. Fig.12 is a non-limiting example of a software architecture, and it is understood that many other architectures may be implemented to facilitate the functionality described herein. The software architecture 1206 may be implemented in a system such as Fig.12 1200, which includes a processor 1204, a memory 1214, and an I / O component 1218, among others. A representative hardware layer 1252 is shown and may represent, for example, Fig.12 The machine 1200 of the embodiment of the present invention. The representative hardware layer 1252 includes a processing unit 1254 having associated executable instructions 1204. The executable instructions 1204 represent executable instructions of the software architecture 1206, including implementations of the methods, components, etc. described herein. The hardware layer 1252 also includes a memory and / or storage module memory / storage device 1256, which also has executable instructions 1204. The hardware layer 1252 may also include other hardware 1258.
[0106] exist Fig.12In the exemplary architecture of , software architecture 1206 can be conceptualized as a stack of layers, each of which provides specific functionality. For example, software architecture 1206 may include layers such as operating system 1202, library 1220, application 1216, and presentation layer 1214. In operation, application 1216 and / or other components within a layer may call application programming interface (API) API call 1208 through the software stack, and receive a response in response to API call 1208. The layers shown are representative in nature, and not all software architectures have all layers. For example, some mobile or dedicated operating systems may not provide framework / middleware 1218, while other operating systems may provide such layers. Other software architectures may include additional layers or different layers.
[0107] The operating system 1202 can manage hardware resources and provide public services. The operating system 1202 may include, for example, a kernel 1222, services 1224, and drivers 1226. The kernel 1222 may serve as an abstraction layer between the hardware and other software layers. For example, the kernel 1222 may be responsible for memory management, processor management (e.g., scheduling), component management, networking, security settings, etc. Services 1224 may provide other public services to other software layers. Drivers 1226 are responsible for controlling or interfacing with the underlying hardware. For example, drivers 1226 include display drivers, camera drivers, drivers, flash drivers, serial communication drivers (e.g., Universal Serial Bus (USB) drivers), Wi-Fi drivers, audio drivers, power management drivers, etc., depending on the hardware configuration.
[0108] The library 1220 provides a common infrastructure used by the application 1216 and / or other components and / or layers. The library 1220 provides functions that allow other software components to perform tasks in an easier manner than directly interfacing with the underlying operating system 1202 functions (e.g., kernel 1222, service 1224, and / or driver 1226). The library 1220 may include a system library 1244 (e.g., a C standard library), which may provide functions such as memory allocation functions, string manipulation functions, mathematical functions, etc. In addition, the library 1220 may include an API library 1246, such as a media library (e.g., a library for supporting the rendering and manipulation of various media formats (such as MPREG4, H.264, MP3, AAC, AMR, JPG, PNG)), a graphics library (e.g., an OpenGL framework that can be used to render 2D and 3D in graphical content on a display), a database library (e.g., SQLite that can provide various relational database functions), a web library (e.g., WebKit that can provide web browsing functions), etc. The library 1220 may also include various other libraries 1248 to provide many other APIs to the applications 1216 and other software components / modules.
[0109] Framework / middleware 1218 (also sometimes referred to as middleware) provides a higher level common infrastructure that can be used by applications 1216 and / or other software components / modules. For example, framework / middleware 1218 can provide various graphical user interface (GUI) functions, advanced resource management, advanced location services, etc. Framework / middleware 1218 can provide a wide range of other APIs that can be used by applications 1216 and / or other software components / modules, some of which can be targeted to a specific operating system 1202 or platform.
[0110] Applications 1216 include built-in applications 1238 and / or third-party applications 1240. Examples of representative built-in applications 1238 may include, but are not limited to, contact applications, browser applications, book reader applications, location applications, media applications, messaging applications, and / or game applications. Third-party applications 1240 may include applications that are hosted by entities other than the vendor of a particular platform using ANDROID TM or IOS TM Software Development Kit (SDK) for developing applications and can be used on platforms such as IOS TM ANDROID TM , Mobile software running on the mobile operating system of the phone or other mobile operating systems. The third-party application 1240 can call the API call 1208 provided by the mobile operating system (such as the operating system 1202) to implement the functions described herein.
[0111] Applications 1216 may use built-in operating system functionality (e.g., kernel 1222, services 1224, and / or drivers 1226), libraries 1220, and framework / middleware 1218 to create user interfaces to interact with users of the system. Alternatively or additionally, in some systems, interaction with the user may occur through a presentation layer, such as presentation layer 1214. In these systems, the application / component "logic" may be separated from aspects of the application / component that interact with the user.
[0112] Fig.13 1 is a block diagram illustrating components of a machine 1300 capable of reading instructions from a machine-readable medium (e.g., a machine-readable storage medium) and performing any one or more of the methods discussed herein, according to some example embodiments. Specifically, Fig.13A graphical representation of a machine 1300 in the example form of a computer system is shown within which instructions 1310 (e.g., software, programs, applications, applet, application software, or other executable code) for causing the machine 1300 to perform any one or more of the methods discussed herein may be executed. Thus, the instructions 1310 may be used to implement the modules or components described herein. The instructions 1310 transform a general-purpose, unprogrammed machine 1300 into a specific machine 1300 that is programmed to perform the functions described and illustrated in the manner described. In alternative embodiments, the machine 1300 operates as a standalone device or may be coupled (e.g., networked) to other machines. In a networked deployment, the machine 1300 may operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine 1300 may include, but is not limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a personal digital assistant (PDA), an entertainment media system, a cellular phone, a smart phone, a mobile device, a wearable device (e.g., a smart watch), a smart home device (e.g., a smart appliance), other smart devices, a network device, a network router, a network switch, a network bridge, or any machine capable of sequentially or otherwise executing instructions 1310 that specify actions to be taken by the machine 1300. In addition, while only a single machine 1300 is shown, the term "machine" should also be construed to include a collection of machines that individually or collectively execute instructions 1310 to perform any one or more of the methodologies discussed herein.
[0113] The machine 1300 may include a processor 1304, a memory / storage 1306, and an I / O component 1318, which may be configured to communicate with each other, for example, via a bus 1302. The memory / storage 1306 may include a memory 1314, such as a main memory or other memory storage device, and a storage unit 1316, both of which are accessible by the processor 1304, such as via the bus 1302. The storage unit 1316 and the memory 1314 store instructions 1310 that embody any one or more of the methods or functions described herein. During execution of the machine 1300, the instructions 1310 may also reside, in whole or in part, within the memory 1314, within the storage unit 1316, within at least one of the processors 1304 (e.g., within a cache memory of a processor), or within any suitable combination thereof. Thus, the memory 1314, the storage unit 1316, and the memory of the processor 1304 are examples of machine-readable media.
[0114] I / O components 1318 may include various components to receive input, provide output, generate output, send information, exchange information, collect measurements, etc. The specific I / O components 1318 included in a particular machine 1300 will depend on the type of machine. For example, a portable machine such as a mobile phone may include a touch input device or other such input mechanism, while a headless server machine may not include such a touch input device. It will be appreciated that I / O components 1318 may include Fig.13 Many other components are not shown in the figure. The I / O components 1318 are grouped according to function only to simplify the following discussion, and the grouping is by no means limiting. In various example embodiments, the I / O components 1318 may include output components 1326 and input components 1328. The output components 1326 may include visual components (e.g., displays such as plasma display panels (PDPs), light emitting diode (LED) displays, liquid crystal displays (LCDs), projectors, or cathode ray tubes (CRTs)), auditory components (e.g., speakers), tactile components (e.g., vibration motors, resistor mechanisms), other signal generators, etc. The input components 1328 may include alphanumeric input components (e.g., keyboards, touch screens configured to receive alphanumeric input, optical keyboards, or other alphanumeric input components), point-based input components (e.g., mice, touch pads, trackballs, joysticks, motion sensors, or other pointing instruments), tactile input components (e.g., physical buttons, touch screens that provide the location and / or force of touch or touch gestures, or other tactile input components), audio input components (e.g., microphones), etc.
[0115] In further example embodiments, the I / O components 1318 may include a biometric component 1330, a motion component 1334, an environment component 1336 or a positioning component 1338, and a variety of other components. For example, the biometric component 1330 may include a component for detecting expressions (e.g., hand expressions, facial expressions, voice expressions, body postures, or eye tracking), measuring biosignals (e.g., blood pressure, heart rate, body temperature, sweat, or brain waves), identifying people (e.g., voice recognition, retinal recognition, facial recognition, fingerprint recognition, or EEG-based recognition), etc. The motion component 1334 may include an acceleration sensor component (e.g., an accelerometer), a gravity sensor component, a rotation sensor component (e.g., a gyroscope), etc. Environmental component 1336 may include, for example, an illumination sensor component (e.g., a photometer), a temperature sensor component (e.g., one or more thermometers that detect ambient temperature), a humidity sensor component, a pressure sensor component (e.g., a barometer), an acoustic sensor component (e.g., one or more microphones that detect background noise), a proximity sensor component (e.g., an infrared sensor that detects nearby objects), a gas sensor (e.g., a gas detection sensor for detecting hazardous gas concentrations for safety or measuring pollutants in the atmosphere), or other components that may provide indications, measurements, or signals corresponding to the surrounding physical environment. Positioning component 1338 may include a position sensor component (e.g., a global positioning system (GPS) receiver component), an altitude sensor component (e.g., an altimeter or barometer that can detect the air pressure from which altitude can be derived), an orientation sensor component (e.g., a magnetometer), etc.
[0116] Communication can be achieved using a variety of technologies. I / O components 1318 may include a communication component 1340 that is operable to couple machine 1300 to network 1332 or device 1320 via coupler 1322 and coupler 1324, respectively. For example, communication component 1340 may include a network interface component or another suitable device that interfaces with network 1332. In other examples, communication component 1340 includes a wired communication component, a wireless communication component, a cellular communication component, a near field communication (NFC) component, Components (e.g., low power ), Components and other communication components that provide communication via other modes. Device 1320 may be another machine or any of a variety of peripheral devices (eg, a peripheral device coupled via a universal serial bus (USB)).
[0117] In addition, the communication component 1340 can detect an identifier or include a component operable to detect an identifier. For example, the communication component 1340 can include a radio frequency identification (RFID) tag reader component, an NFC smart tag detection component, an optical reader component (e.g., an optical sensor for detecting a one-dimensional barcode such as a universal product code (UPC) barcode, a multi-dimensional barcode such as a Quick Response (QR) code, an Aztec code, a data matrix, a digital graphic, a Max code, PDF417, a Super code, a UCC RSS-2D barcode, and other optical codes), or an acoustic detection component (e.g., a microphone for identifying an audio signal of a tag). In addition, various information can be derived via the communication component 1340 that can indicate a particular location, such as a location via an Internet Protocol (IP) geographic location, a location via a GPS, a location via a GPS, a location via a GPS, a location via a GPS, a location via a GPS, a location via a GPS, a location via a GPS, a location via a GPS, a location via a GPS, a location via a GPS, a location via a GPS, a location via a GPS, a location via a GPS, a location via a GPS, a location via a GPS, a location via a GPS, a location via a GPS, a location via a GPS, a location via a GPS, a location via a GPS, a location via a GPS, a location Location by signal triangulation, location via detection of NFC beacon signals, etc.
[0118] Glossary
[0119] "ANAMORPHOSIS" in this context refers to distortions and transformations applied to media items, such as images and videos, so that the media items appear normal when viewed from a particular point or through a suitable viewing device, mirror or lens.
[0120] "Viewing angle" in this context refers to the viewing angle of a user at a particular location.
[0121] "Carrier signal" in this context refers to any intangible medium capable of storing, encoding or carrying instructions for execution by a machine, and includes digital or analog communications signals or other intangible media to facilitate communication of such instructions. Instructions may be sent or received over a network using a transmission medium via a network interface device and using any of a number of well-known transmission protocols.
[0122] A "client device" in this context refers to any machine that interfaces with a communication network to obtain resources from one or more server systems or other client devices. A client device may be, but is not limited to, a mobile phone, a desktop computer, a laptop computer, a portable digital assistant (PDA), a smart phone, a tablet computer, an ultrabook, a netbook, a laptop computer, a multiprocessor system, a microprocessor-based or programmable consumer electronics product, a game console, a set-top box, or any other communication device with which a user can access a network.
[0123] A "communication network" in this context refers to one or more parts of a network, which may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), the Internet, a part of the Internet, a part of the public switched telephone network (PSTN), a plain old telephone service (POTS) network, a cellular telephone network, a wireless network, A network, other type of network, or a combination of two or more such networks. For example, the network or a portion of the network may include a wireless or cellular network, and the coupling may be a code division multiple access (CDMA) connection, a global system for mobile communications (GSM) connection, or other type of cellular or wireless coupling. In this example, the coupling may implement any of various types of data transmission technologies, such as single carrier radio transmission technology (1xRTT), evolution data optimized (EVDO) technology, general packet radio service (GPRS) technology, enhanced data rates for GSM evolution (EDGE) technology, the third generation partnership project (3GPP) including 3G, fourth generation wireless (4G) networks, universal mobile telecommunications system (UMTS), high speed packet access (HSPA), world wide interoperability for microwave access (WiMAX), long term evolution (LTE) standards, other standards defined by various standards development organizations, other remote protocols, or other data transmission technologies.
[0124] A "short message" in this context refers to a message that is accessible during a time-limited duration. A short message can be text, an image, a video, etc. The access time for a short message can be set by the sender of the message. Alternatively, the access time can be a default setting or a setting specified by the recipient. Regardless of the setting technique, the message is transient.
[0125] "Machine-readable medium" in this context refers to a component, device, or other tangible medium capable of temporarily or permanently storing instructions and data, and may include, but is not limited to, random access memory (RAM), read-only memory (ROM), buffer memory, flash memory, optical media, magnetic media, cache memory, other types of memory (e.g., erasable programmable read-only memory (EEPROM)), and / or any suitable combination thereof. The term "machine-readable medium" should be deemed to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) capable of storing instructions. The term "machine-readable medium" may also be deemed to include any medium or combination of multiple media capable of storing instructions (e.g., code) executed by a machine, such that the instructions, when executed by one or more processors of the machine, cause the machine to perform any one or more of the methods described herein. Thus, "machine-readable medium" refers to a single storage device or device, as well as a "cloud-based" storage system or storage network comprising multiple storage devices or devices. The term "machine-readable medium" excludes the signal itself.
[0126] "Component" in this context refers to a device, physical entity or logic with boundaries defined by function or subroutine calls, branch points, application program interfaces (APIs) or other technologies that provide partitioning or modularization of specific processing or control functions. Components can be combined with other components via their interfaces to perform machine processes. Components can be encapsulated functional hardware units designed for use with other components, and part of a program that generally performs specific functions of related functions. Components can constitute software components (e.g., codes embodied on machine-readable media) or hardware components. "Hardware components" are tangible units that can perform certain operations and can be configured or arranged in a certain physical manner. In various example embodiments, one or more computer systems (e.g., stand-alone computer systems, client computer systems, or server computer systems) or one or more hardware components of a computer system (e.g., a processor or a group of processors) can be configured by software (e.g., an application or an application portion) to operate as hardware components that perform certain operations as described herein. Hardware components can also be implemented mechanically, electronically, or any suitable combination thereof. For example, a hardware component may include a dedicated circuit or logic that is permanently configured to perform certain operations. A hardware component may be a dedicated processor, such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC). A hardware component may also include a programmable logic or circuit that is temporarily configured by software to perform certain operations. For example, a hardware component may include software executed by a general purpose processor or other programmable processor. After being configured by the software, the hardware component becomes a specific machine (or a specific component of a machine) that is uniquely customized to perform the configured function and is no longer a general purpose processor. It should be understood that the decision to mechanically implement a hardware component in a dedicated and permanently configured circuit or in a temporarily configured circuit (e.g., configured by software) may be driven by cost and time considerations. Therefore, the phrase "hardware component" (or "hardware-implemented component") should be understood to include a tangible entity, i.e., an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g., programmed), so as to operate or perform certain operations described herein in a certain manner. Considering an embodiment in which a hardware component is temporarily configured (e.g., programmed), it is not necessary to configure or instantiate each hardware component in the hardware component at any one time. For example, where a hardware component includes a general purpose processor that is configured by software to be a special purpose processor, the general purpose processor may be configured as corresponding different special purpose processors (e.g., including different hardware components) at different times. The software configures a particular processor or processors accordingly, e.g., to constitute a particular hardware component at one time and to constitute a different hardware component at a different time. Hardware components may provide information to and receive information from other hardware components. Thus, the described hardware components may be viewed as being communicatively coupled.In the case of multiple hardware components existing at the same time, communication can be achieved by signal transmission between two hardware components or more hardware components (for example, through appropriate circuits and buses). In embodiments where multiple hardware components are configured or instantiated at different times, communication between the hardware components can be achieved, for example, by storing and obtaining information in a memory structure accessible to multiple hardware components. For example, a hardware component can perform an operation and store the output of the operation in a memory device coupled to it in communication. Then, another hardware component can access the memory device later to obtain and process the stored output. The hardware component can also initiate communication with an input or output device and can operate on a resource (for example, a collection of information). The various operations of the example methods described herein can be performed at least in part by one or more processors that are temporarily configured (for example, by software) or permanently configured to perform related operations. Whether temporarily configured or permanently configured, the processor can constitute a processor-implemented component that is used to perform one or more operations or functions described herein. As used herein, a "processor-implemented component" refers to a hardware component implemented using one or more processors. Similarly, the method described herein can be implemented at least in part by a processor, wherein a specific processor or multiple processors are examples of hardware. For example, at least some of the operations in the method can be performed by one or more processors or components implemented by the processor. In addition, one or more processors can also operate to support the performance of related operations in a "cloud computing" environment or as "software as a service" (SaaS). For example, at least some of the operations in the operation can be performed by a group of computers (as an example of a machine including a processor), and these operations can be accessed via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., application program interface (API)). The performance of some operations in the operation can be distributed between processors, not only residing in a single machine, but also deployed on multiple machines. In some example embodiments, the processor or the component implemented by the processor can be located in a single geographical location (e.g., in a home environment, an office environment, or a server cluster). In other example embodiments, the processor or the component implemented by the processor can be distributed in multiple geographical locations.
[0127] A "processor" in this context refers to any circuit or virtual circuit (a physical circuit emulated by logic executed on an actual processor) that manipulates data values according to control signals (e.g., "commands," "opcodes," "machine code," etc.) and produces corresponding output signals applied to operate a machine. For example, a processor may be a central processing unit (CPU), a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a radio frequency integrated circuit (RFIC), or any combination thereof. The processor may further be a multi-core processor having two or more independent processors (sometimes referred to as "cores") that can execute instructions simultaneously.
[0128] In this context, a "timestamp" refers to a sequence of characters or encoded information that identifies when a particular event occurred, such as giving a date and time of day, sometimes with accuracy to fractions of a second.
Claims
1. A method for media item attachment, comprising: receiving, by a client device, an attach request including a data object, the data object including a first media item; receiving a selection of a second media item from the client device; generating, in response to the selection of the second media item, a graphical icon based on the second media item, wherein the graphical icon is linked to an address of the second media item; attaching the graphical icon to the first media item; as well as A representation of the first media item is caused to be displayed, the representation comprising displaying the graphical icon at a location within the representation of the first media item.
2. The method according to claim 1, wherein: Receiving the selection of the second media item further comprises: receiving a search query from the client device; causing a plurality of media items to be displayed on the client device based on the search query, the plurality of media items including at least the second media item; and The selection of the second media item from the plurality of media items is received.
3. The method according to claim 1, wherein: The second media item includes a media attribute, and generating the graphical icon based on the second media item includes: The graphical icon is generated based on the media attributes of the second media item.
4. The method according to claim 3, wherein: The media attribute is the media type.
5. The method according to claim 1, wherein: The address includes a uniform resource locator.
6. The method according to claim 1, wherein: The client device is a first client device, and the method further comprises: generating a message including the data object, the message being addressed to a second client device; causing display of the rendering of the first media item on the second client device; receiving input selecting said display of said graphical icon; accessing the second media item at the second client device based on the address linked to the graphical icon; and The second media item is caused to be displayed in the presentation of the first media item.
7. The method according to claim 6, wherein: The message comprises a short message.
8. A media item attachment system comprising: Memory; as well as at least one hardware processor coupled to the memory and comprising instructions for causing the system to perform operations comprising: receiving, by a client device, an attach request including a data object, the data object including a first media item; receiving a selection of a second media item from the client device; generating, in response to the selection of the second media item, a graphical icon based on the second media item, wherein the graphical icon is linked to an address of the second media item; attaching the graphical icon to the first media item; and A representation of the first media item is caused to be displayed, the representation comprising displaying the graphical icon at a location within the representation of the first media item.
9. The system according to claim 8, wherein: Receiving the selection of the second media item further comprises: receiving a search query from the client device; causing a plurality of media items to be displayed on the client device based on the search query, the plurality of media items including at least the second media item; and The selection of the second media item from the plurality of media items is received.
10. The system according to claim 8, wherein: The second media item includes a media attribute, and generating the graphical icon based on the second media item includes: The graphical icon is generated based on the media attributes of the second media item.
11. The system according to claim 10, wherein: The media attribute is the media type.
12. The system according to claim 8, wherein: The address includes a uniform resource locator.
13. The system according to claim 8, wherein: The client device is a first client device, and the operations further include: generating a message including the data object, the message being addressed to a second client device; causing display of the rendering of the first media item on the second client device; receiving input selecting said display of said graphical icon; accessing the second media item at the second client device based on the address linked to the graphical icon; and The second media item is caused to be displayed in the presentation of the first media item.
14. The system according to claim 13, wherein: The message comprises a short message.
15. A non-transitory machine-readable storage medium comprising instructions that, when executed by one or more processors of a machine, cause the machine to perform operations comprising: receiving, by a client device, an attach request including a data object, the data object including a first media item; receiving a selection of a second media item from the client device; generating, in response to the selection of the second media item, a graphical icon based on the second media item, wherein the graphical icon is linked to an address of the second media item; attaching the graphical icon to the first media item; as well as A representation of the first media item is caused to be displayed, the representation comprising displaying the graphical icon at a location within the representation of the first media item.
16. The non-transitory machine-readable storage medium of claim 15, wherein: Receiving the selection of the second media item further comprises: receiving a search query from the client device; causing a plurality of media items to be displayed on the client device based on the search query, the plurality of media items including at least the second media item; and The selection of the second media item from the plurality of media items is received.
17. The non-transitory machine-readable storage medium of claim 15, wherein: The second media item includes a media attribute, and generating the graphical icon based on the second media item includes: The graphical icon is generated based on the media attributes of the second media item.
18. The non-transitory machine-readable storage medium of claim 17, wherein: The media attribute is the media type.
19. The non-transitory machine-readable storage medium of claim 17, wherein: The address includes a uniform resource locator.
20. The non-transitory machine-readable storage medium of claim 15, wherein: The client device is a first client device, and the operations further include: generating a message including the data object, the message being addressed to a second client device; causing display of the rendering of the first media item on the second client device; receiving input selecting said display of said graphical icon; accessing the second media item at the second client device based on the address linked to the graphical icon; and The second media item is caused to be displayed in the presentation of the first media item.
Citation Information
Patent Citations
Methods and apparatus to measure exposure to streaming media
CN105814901A
Method, Apparatus and Computer Program Product for Displaying Virtual Media Items in a Visual Media
US20090158206A1