Mixed reality media content

By detecting graphic coded images and using mixed reality technology, combining surface detection and depth map processing, the problem of inefficiency of information permanent and augmented reality interaction in printing materials is solved, and the accurate presentation and interaction of dynamic media content is achieved.

CN120019402APending Publication Date: 2025-05-16SNAP INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380069671.0
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-09-29
Filing Date
2023-09-29
Publication Date
2025-05-16

AI Technical Summary

Technical Problem

The prior art is difficult to effectively solve the permanent problem of information in printing materials, and the application of augmented reality technology in real-world environments has interactiveness and inefficiency in information presentation.

Method used

By detecting graphic coded images, such as QR codes, using mixed reality technology to generate and display media content, combined with surface detection technology and depth map processing, the precise presentation and interaction of media content is achieved.

Benefits of technology

Media content that is dynamically presented and interacts in a real-world environment is realized, solving the problem of inefficiency of information and inefficiency, and providing a more flexible and user-friendly experience.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120019402A_ABST
    Figure CN120019402A_ABST
Patent Text Reader

Abstract

A mixed reality media content system may be configured to perform operations including: causing image data to be displayed at a client device, the image data including a depiction of an object, the depiction including a graphic code at a location on the object; detecting a graphic code at a position on the depiction of the object based on the image data; accessing the media content in the media repository based on the graphic code scanned by the client device; and causing a presentation of the media content to be displayed at the client device at the location of the graphic code on the depiction of the object.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Priority claim

[0002] This patent application claims the benefit of priority to U.S. application serial number 17 / 956,603, filed on September 29, 2022, which is incorporated herein by reference in its entirety. Background Art

[0003] The physical nature of printed materials allows users to physically turn its pages to view the content. The disadvantage of physical books, journals, and paper is the permanent setting of information on its pages.

[0004] Augmented reality (AR) is an interactive experience of a real-world environment in which objects that exist in the real world are augmented by computer-generated sensory information (sometimes across multiple sensory modalities). The superimposed sensory information can be constructive (i.e., in addition to the natural environment) or destructive (i.e., masking the natural environment).

[0005] BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

[0006] In the drawings, which are not necessarily drawn to scale, similar reference numerals may describe similar components in different views. To easily identify the discussion of any particular element or action, the most significant digit or digits in the reference numeral refer to the figure number in which the element is first introduced. Some embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which:

[0007] Figure 1 is a diagrammatic representation of a networked environment in which the present disclosure may be deployed, according to some examples.

[0008] Figure 2 is a diagrammatic representation of a messaging system having both client-side and server-side functionality according to some examples.

[0009] Figure 3 is a flow chart depicting a method for generating mixed reality media content and causing display of the mixed reality media content, according to one implementation.

[0010] Figure 4 is a flow chart depicting a method for executing a function associated with media content in response to an input selecting the media content, according to one implementation.

[0011] Figure 5 is a flow chart describing a method for generating mixed reality media content and causing display of the mixed reality media content, according to one embodiment.

[0012] Figure 6 is an interface diagram depicting a graphical user interface (GUI) according to one embodiment.

[0013] Figure 7 is an interface diagram depicting a GUI according to one embodiment.

[0014] Figure 8 is a diagrammatic representation of a machine in the form of a computer system according to some examples within which a set of instructions may be executed for causing the machine to perform any one or more of the methodologies discussed herein.

[0015] Fig. 9 is a block diagram illustrating a software architecture within which examples may be implemented.

[0016] Fig.10 is a diagrammatic representation of a processing environment according to some examples. DETAILED DESCRIPTION

[0017] As discussed above, AR is an interactive experience of a real-world environment in which objects present in the real world are augmented by computer-generated perceptual information. According to certain example embodiments, a system for displaying mixed reality content in response to detecting the presence of a graphically encoded image such as a QR code is discussed herein. For example, a mixed reality media content system may be configured to perform operations including: causing image data to be displayed at a client device, the image data including a depiction of an object, the depiction including a graphical code at a location on the object; based on the image data, detecting a graphical code at a location on the depiction of the object; accessing media content in a media repository based on a graphical code scanned by a client device; and causing a presentation of the media content to be displayed at the client device at the location of the graphical code on the depiction of the object.

[0018] In some implementations, the graphically encoded image may be generated based on input received from a user of the client device.For example, the system may present a graphical editor at the client device, where the graphical editor may provide resources for generating the graphically encoded image.

[0019] In some embodiments, in response to detecting the graphic code, the system can perform one or more surface detection techniques to determine the skew, rotation, and position of the surface of the object to which the graphic code is applied. Thus, the system can present media content based on the skew, rotation, and position of the surface of the object.

[0020] In some embodiments, the graphical code may be presented within a boundary, such as a bounding box. In response to detecting the graphical code, the system may detect or otherwise identify the bounding box so as to display the media content within the boundaries defined by the bounding box. Thus, the media content may be adjusted or scaled so as to fit within the boundaries.

[0021] For example, in some embodiments, the media content can be scaled to fit within at least one dimension within the boundaries of the bounding box without truncating the media content. In some embodiments, the media content can be scaled to fill the entire boundaries defined by the bounding box, wherein the media content is truncated in the dimensions that overlap with the boundaries of the bounding box.

[0022] The system can access depth information generated by the client device in order to generate a depth map representing the curvature of the surface of the object. The system can transform the depth map into a vector object (i.e., a 3D mesh), which can be used to render the media object based on the detected curvature. In some embodiments, the system can reduce the depth map to a resolution of 1 vector per square centimeter to increase mesh rendering speed while maintaining sufficient resolution of the curvature.

[0023] In some embodiments, the depth map may be updated at regular time intervals (i.e., every X seconds) to ensure that the 3D mesh provides an accurate representation of the curvature of the surface of the object. In some embodiments, a threshold value may be used to update the 3D mesh in response to detecting a significant change in the depth map. For example, the system may actively monitor the depth values ​​of the surface of the object in order to perform a comparison of the depth map associated with the first 3D mesh with the monitored depth values. Upon detecting a threshold change in the depth value, the system may generate an updated 3D mesh.

[0024] In some embodiments, the system can apply one or more Canny edge detection algorithms to detect edges or frames within the boundaries of the detected surface area to present the selected media content within the boundaries of the detected surface area. For example, the media content can be scaled to fit within the frame defined by the boundaries of the detected surface area, or can be scaled to fit completely within the frame.

[0025] In some embodiments, the system can receive input from a client device, such as tactile input or hand tracking input. Upon receiving the input, the system can detect a conflict between an attribute of the input (i.e., a landmark of the hand tracking input) and one or more features of the media content. For example, the one or more features of the media content can include the display of one or more interactive icons, wherein each of the one or more interactive icons can correspond to a function associated with the media content. The system can then execute a function or additional feature of the media content based on the detected conflict.

[0026] Consider an illustrative example from a user perspective. A user of a client device may scan a graphically coded image, such as a QR code, where the graphically coded image is printed on a newspaper or magazine and is surrounded by a bounding box. After scanning the graphically coded image, the system may access a repository to retrieve media content identified by the graphically coded image.

[0027] Then, the system can determine the curvature and orientation associated with the newspaper or magazine, and thus can present the display of media content on the newspaper or magazine based on the border, curvature and orientation defined by the bounding box. Therefore, the system can scale the media content to fit within the border of the bounding box without truncation, or can scale the media content so that the displayed media content fills the bounding box completely, wherein a part of the media content is truncated. Then, the user of the client device can view the media content in the GUI of the client device, and tactile input can be provided, wherein the tactile input may conflict with the media content in the presentation of the media content at the client device. Therefore, the system can access other content based on the input, or otherwise perform functions associated with the media content.

[0028] Networked computing environment

[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 multiple instances of client devices 106, each of which hosts multiple applications including a messaging client 108. Each messaging client 108 is communicatively coupled to other instances of the messaging client 108 and a messaging server system 104 via a network 102 (e.g., the Internet).

[0030] The messaging client 108 is able to communicate and exchange data with another messaging client 108 and with the messaging server system 104 via the network 102. The data exchanged between the messaging clients 108 and between the messaging clients 108 and the messaging server system 104 includes functions (e.g., commands for activating functions) and payload data (e.g., text, audio, video, or other multimedia data).

[0031] The messaging server system 104 provides server-side functionality to certain messaging clients 108 via the network 102. Although certain functionality of the messaging system 100 is described herein as being performed by either the messaging client 108 or the messaging server system 104, it may be a design choice whether certain functionality is located within the messaging client 108 or within the messaging server system 104. For example, it may be technically preferable to initially deploy certain technologies and functionality within the messaging server system 104, but to later migrate the technologies and functionality to the messaging client 108 where the client device 106 has sufficient processing power.

[0032] The messaging server system 104 supports various services and operations provided to the messaging clients 108. Such operations include sending data to the messaging clients 108, receiving data from the messaging clients 108, and processing data generated by the messaging clients 108. As examples, the data may include message content, client device information, geolocation information, media enhancements and overlays, message content persistence conditions, social network information, and live event information. The data exchange within the messaging system 100 is activated and controlled by functions available via the user interface (UI) of the messaging client 108.

[0033] Turning now specifically to the messaging server system 104, an application program interface (API) server 112 is coupled to the application server 110 and provides a programming interface to the application server 110. The application server 110 is communicatively coupled to a database server 116, which facilitates access to a database 122 that stores data associated with messages processed by the application server 110. Similarly, a web server 124 is coupled to the application server 110 and provides a web-based interface to the application server 110. To this end, the web server 124 processes incoming network requests via the hypertext transfer protocol (HTTP) and several other related protocols. In some embodiments, the database 122 may include a decentralized database.

[0034] The application program interface (API) server 112 receives and sends message data (e.g., commands and message payloads) between the client device 106 and the application server 110. Specifically, the application program interface (API) server 112 provides a set of interfaces (e.g., routines and protocols) that can be called or queried by the messaging client 108 to activate the functions of the application server 110. An application program interface (API) server 112 exposes various functions supported by the application server 110, including: account registration; login functionality; sending messages from a particular messaging client 108 to another messaging client 108 via the application server 110; sending media files (e.g., images or videos) from a messaging client 108 to the messaging server 114 and for possible access by another messaging client 108; setting of media data collections (e.g., stories); retrieving a friend list of a user of a client device 106; retrieving such collections; retrieving messages and content; adding and removing entities (e.g., friends) from an entity graph (e.g., a social graph); locating friends within a social graph; and opening application events (e.g., related to a messaging client 108).

[0035] The application server 110 hosts multiple server applications and subsystems, including, for example, a messaging server 114, an image processing server 118, and a social network server 120. The messaging server 114 implements a variety of message processing technologies and functions, particularly those related to the aggregation and other processing of content (e.g., text and multimedia content) included in messages received from multiple instances of the messaging client 108. As will be described in more detail, text and media content from multiple sources can be aggregated into collections of content (e.g., referred to as stories or galleries). These collections are then made available to the messaging client 108. In view of the hardware requirements for other processor and memory intensive data processing, other processor and memory intensive data processing can also be performed on the server side by the messaging server 114.

[0036] The application server 110 also includes an image processing server 118 that is dedicated to performing various image processing operations, typically with respect to images or videos within the payload of messages sent from or received at the messaging server 114 .

[0037] The social network server 120 supports various social networking functions and services and makes them available to the messaging server 114. Examples of functions and services supported by the social network server 120 include identifying other users in the messaging system 100 who have relationships with a particular user or who the particular user is "following," and also identifying interests and other entities of a particular user.

[0038] System Architecture

[0039] Figure 2 1 is a block diagram showing additional details about the messaging system 100 according to some examples. Specifically, the messaging system 100 is shown to include a messaging client 108 and an application server 110. The messaging system 100 contains a number of subsystems that are supported on the client side by the messaging client 108 and on the server side by the application server 110. These subsystems include, for example, a transient timer system 202, a collection management system 204, an augmentation system 206, a mapping system 210, a gaming system 212, and a mixed reality system 214.

[0040] The transient timer system 202 is responsible for implementing temporary or time-limited access to content by the messaging client 108 and the messaging server 114. The transient timer system 202 includes a plurality of timers that selectively enable access (e.g., for presentation and display) of messages and associated content via the messaging client 108 based on duration and display parameters associated with a message or a collection of messages (e.g., a story). Additional details regarding the operation of the transient timer system 202 will be provided below.

[0041] The collection management system 204 is responsible for managing collections or collections of media (e.g., collections of text, image video, and audio data). Collections of content (e.g., messages, including images, videos, text, and audio) can be organized into "event galleries" or "event stories." Such collections can be made available for a specified time period (e.g., the duration of the event to which the content relates). For example, content related to a concert can be made available as a "story" for the duration of the concert. The collection management system 204 can also be responsible for publishing an icon that provides notification of the existence of a particular collection to the user interface of the messaging client 108.

[0042] The collection management system 204 also includes a curation interface 208 that allows collection managers to manage and curate specific content collections. For example, the curation interface 208 enables an event organizer to curate a collection of content related to a specific event (e.g., to delete inappropriate content or redundant messages). In addition, the collection management system 204 uses machine vision (or image recognition technology) and content rules to automatically curate content collections. In some examples, compensation can be paid to users for including user-generated content in a collection. In such a case, the collection management system 204 operates to automatically pay such users for use of their content.

[0043] The enhancement system 206 provides various functions that enable a user to enhance (e.g., annotate or otherwise modify or edit) media content associated with a message. For example, the enhancement system 206 provides functions related to generating and publishing media overlays for messages processed by the messaging system 100. The enhancement system 206 is operable to supply media overlays or enhancements (e.g., image filters) to the messaging client 108 based on the geographic location of the client device 106. In another example, the enhancement system 206 is operable to supply media overlays to the messaging client 108 based on other information such as social network information of the user of the client device 106. The media overlay can include audio and visual content and visual effects. Examples of audio and visual content include pictures, text, logos, animations, and sound effects. Examples of visual effects include color overlays. Audio and visual content or visual effects can be applied to media content items (e.g., photos) at the client device 106. For example, the media overlay can include text or images that can be overlaid on top of a photo taken by the client device 106. In another example, the media overlay includes a location identification overlay (e.g., Venice Beach), the name of a live event, or a business name overlay (e.g., Beach Cafe). In another example, the enhancement system 206 uses the geolocation of the client device 106 to identify a media overlay that includes the name of the business at the geolocation of the client device 106. The media overlay may include other tags associated with the business. The media overlay may be stored in the database 122 and accessed through the database server 116.

[0044] In some examples, the enhancement system 206 provides a user-based publishing platform that enables a user to select a geolocation on a map and upload content associated with the selected geolocation. The user may also specify under what circumstances a particular media overlay should be provided to other users. The enhancement system 206 generates a media overlay that includes the uploaded content and associates the uploaded content with the selected geolocation.

[0045] In other examples, the enhancement 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 enhancement system 206 associates the media coverage of the highest bidding merchant with the corresponding geographic location for a predefined amount of time.

[0046] The mapping system 210 provides various geolocation functions and supports the presentation of map-based media content and messages by the messaging client 108. For example, the mapping system 210 enables the display of user icons or avatars on a map to indicate the current or past locations of the user's "friends" and media content (e.g., a collection of messages including photos and videos) generated by such friends in the context of the map. For example, on the map interface of the messaging client 108, messages posted by a user to the messaging system 100 from a specific geolocation can be displayed to the "friends" of a specific user in the context of that specific location on the map. The user can also share his or her location and status information with other users of the messaging system 100 (e.g., using appropriate status avatars) via the messaging client 108, where the location and status information is similarly displayed to the selected user in the context of the map interface of the messaging client 108.

[0047] The gaming system 212 provides various gaming functions in the context of the messaging client 108. The messaging client 108 provides a gaming interface that provides a list of available games that can be launched by a user in the context of the messaging client 108 and played with other users of the messaging system 100. The messaging system 100 also enables a particular user to invite other users to participate in playing a particular game by sending an invitation to such other users from the messaging client 108. The messaging client 108 also supports both voice and text messaging (e.g., chatting) in the context of gaming, provides leaderboards for gaming, and also supports providing in-game rewards (e.g., coins and items).

[0048] According to some embodiments, the mixed reality system 214 provides functionality that may include: causing image data to be displayed at a client device, the image data including a depiction of an object, the depiction including a graphical code at a location on the object; detecting a graphical code at a location on the depiction of the object based on the image data; accessing media content in a media repository based on the graphical code scanned by the client device; and causing a presentation of the media content to be displayed at the client device at the location of the graphical code on the depiction of the object.

[0049] Figure 31 is a flowchart illustrating the operation of the mixed reality system 214 when executing the method 300 for generating mixed reality media content and causing the mixed reality media content to be displayed according to one embodiment. The operation of the method 300 may be described above with respect to Figure 2 The messaging system 100 described herein may be executed by one or more subsystems such as the mixed reality system 214. Figure 3 As shown in , method 300 includes one or more operations 302 , 304 , 306 , and 308 .

[0050] At operation 302 , the mixed reality system 214 causes display of image data at the client device 106 , wherein the image data includes a depiction of an object including a graphical code at a location on the object.

[0051] At operation 304 , the mixed reality system 214 detects a graphical code at a location on the depiction of the object based on the image data. In response to detecting the graphical code, at operation 306 , the mixed reality system 214 accesses media content in a media repository based on the graphical code.

[0052] At operation 308 , the mixed reality system 214 causes a rendering of the media content to be displayed within the GUI of the client device 106 at the location of the graphical code on the depiction of the object.

[0053] Figure 4 4 is a flowchart illustrating the operation of the mixed reality system 214 in executing a method 400 for executing a function associated with media content in response to an input selecting media content according to one embodiment. The operation of the method 400 may be described above with respect to Figure 2 The messaging system 100 described herein may be executed by one or more subsystems such as the mixed reality system 214. Figure 4 As shown in , method 400 includes one or more operations 402 and 404 .

[0054] At operation 402, the mixed reality system 214 receives input selecting presentation of media content from the client device 106. Upon receiving the input, the system may detect a conflict between attributes of the input (i.e., landmarks of the hand tracking input) and one or more features of the presentation of the media content. For example, the one or more features of the media content may include display of one or more interactive icons, where each of the one or more interactive icons may correspond to a function associated with the media content.

[0055] At operation 404, the mixed reality system 214 can then execute a function or additional feature of the media content based on the detected conflict. For example, in some implementations, the media content can include a video, wherein the execution of the video can include playing the video.

[0056] Figure 5 1 is a flowchart illustrating the operation of the mixed reality system 214 when executing the method 500 for generating mixed reality media content and causing the mixed reality media content to be displayed according to one embodiment. The operation of the method 500 may be described above with respect to Figure 2 The messaging system 100 described herein may be executed by one or more subsystems such as the mixed reality system 214. Figure 5 As shown in , method 500 includes one or more operations 502 and 504 .

[0057] At operation 502, the mixed reality system 214 determines the orientation of the object on which the graphically coded image is displayed. For example, in some embodiments, in response to detecting the graphically coded image in the presentation of the image data, the system may perform one or more surface detection techniques to determine the skew, rotation, and position of the surface of the object to which the graphically coded image is applied.

[0058] In some embodiments, the system can access depth information in order to generate a depth map representing the curvature of the surface of the object. The system can transform the depth map into a vector object (i.e., a 3D mesh), which can be used to render the media object based on the detected curvature. In some embodiments, the system can reduce the depth map to a resolution of 1 vector per square centimeter to increase mesh rendering speed while maintaining sufficient resolution of the curvature.

[0059] In some embodiments, in response to detecting a significant change in the depth map, a threshold value can be used to update the 3D mesh. For example, the system can actively monitor the depth value of the surface of the object to perform a comparison of the depth map associated with the first 3D mesh with the monitored depth value. Upon detecting a threshold change in the depth value, the system can generate an updated 3D mesh.

[0060] At operation 504 , the mixed reality system 214 causes a rendering of the media object to be displayed based on the detected orientation and the 3D mesh depicting the curvature of the object.

[0061] Figure 6 is an interface diagram 600 depicting a GUI presented by a mixed reality system 214 at a client device 106, according to one embodiment. As seen in the interface 602, a graphically coded image 606 may be depicted on an object, where the object may include a newspaper or magazine. According to some embodiments, the object may simply include a surface where the graphically coded image 606 may be applied or otherwise depicted thereon.

[0062] In some implementations, the graphically coded image 606 may be surrounded by a border element 604, wherein the border element 604 includes a boundary defining a display area for media content associated with the graphically coded image 606 to be displayed on a surface of an object.

[0063] As in Figure 3 In response to detecting the presence of the graphically encoded image 606, the mixed reality system 214 can access a media repository (i.e., database 122) to retrieve media content 610, wherein the media content 610 is identified by the graphically encoded image 606. In some implementations, the media content 610 can be identified based on the graphically encoded image 606 and one or more contextual factors, wherein the contextual factors include: location data; temporal data; user profile data; device properties associated with the client device 106; image properties of the image data; and user preferences.

[0064] Thus, as seen in interface 608 and as shown in Figure 3 As described in method 300 of , mixed reality system 214 can cause a presentation of media content 610 to be displayed on a surface of an object within a GUI presented at client device 106. The presentation of media content 610 can be presented within boundaries 604 by scaling the media content to fit within the boundaries defined by the bounding box. For example, the media content can be configured such that the system can scale the media content to fit within the boundaries of the bounding box without truncating the media content, or in some implementations, the media content can be scaled such that the media content fills the bounding box, with a portion of the media content being truncated.

[0065] As seen in interface 608, media content 610 may include a display of one or more graphical icons 612, wherein the graphical icons 612 are configured to respond to input received from a user of client device 106. For example, the user of client device 106 may provide input corresponding to a location on a surface of an object where media content 610 is displayed, wherein the location corresponds to a location of graphical icon 612 within a display of client device 106. In response to receiving the input, mixed reality system 214 may perform a command or function associated with the selected graphical icon 612. For example, mixed reality system 214 may cause a video to begin playing, or may display certain related information in response to receiving the input.

[0066] Figure 7is an interface diagram 700 depicting a GUI 702 presented by a mixed reality system 214, according to one embodiment. The interface diagram 700 provides an illustration of mixed reality media content 704 that may be displayed by the mixed reality system 214. As seen in the GUI 702, the mixed reality media content 704 may include interactive content 706, where the interactive content 706 may include a set of selectable graphical icons 708. For example, each icon in the set of selectable graphical icons may correspond to additional content associated with the interactive content 706.

[0067] For example, a user of the client device 106 may provide input to select a graphical icon from the set of selectable graphical icons 706. As seen in the interface diagram 700, each selectable graphical icon 706 may correspond to a set of data to be presented on the graphical image of the mixed reality interactive content 704. Thus, in response to receiving input to select a selectable graphical icon 706, the mixed reality system 214 may cause the client device 106 to display a set of data (or content) corresponding to the selected icon. Similarly, each icon in the set of selectable graphical icons 706 may correspond to content that may be presented upon receiving a selection of the icon.

[0068] Machine Architecture

[0069] Figure 8800 within which instructions 810 (e.g., software, programs, applications, applet, app, or other executable code) may be executed for causing the machine 800 to perform any one or more of the methods discussed herein. For example, the instructions 810 may cause the machine 800 to perform any one or more of the methods described herein. The instructions 810 convert a general purpose, unprogrammed machine 800 into a specific machine 800 that is programmed to perform the functions described and illustrated in the manner described. The machine 800 may operate as a standalone device or may be coupled (e.g., networked) to other machines. In a networked deployment, the machine 800 may operate as 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 800 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 web device, a network router, a network switch, a network bridge, or any machine capable of sequentially or otherwise executing instructions 810 specifying actions to be taken by the machine 800. In addition, although only a single machine 800 is shown, the term "machine" should also be taken to include a collection of machines that individually or jointly execute instructions 810 to perform any one or more of the methods discussed herein. For example, the machine 800 may include any of the client device 106 or a plurality of server devices forming part of the messaging server system 104. In some examples, the machine 800 may also include both a client system and a server system, wherein certain operations of a particular method or algorithm are performed on the server side, and certain operations of the particular method or algorithm are performed on the client side.

[0070] The machine 800 may include a processor 804, a memory 806, and an input / output I / O component 638, which may be configured to communicate with each other via a bus 840. In an example, the processor 804 (e.g., 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), other processors, or any suitable combination thereof) may include, for example, a processor 808 that executes instructions 810 and a processor 812. The term "processor" is intended to include multi-core processors, which may include two or more independent processors (sometimes referred to as "cores") that can execute instructions simultaneously. Although Figure 8 Multiple processors 804 are shown, but machine 800 may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core processor), multiple processors with a single core, multiple processors with multiple cores, or any combination thereof.

[0071] The memory 806 includes a main memory 814, a static memory 816, and a storage unit 818, which are all accessible by the processor 804 via the bus 840. The main memory 806, the static memory 816, and the storage unit 818 store instructions 810 that implement any one or more of the methods or functions described herein. The instructions 810 may also reside, completely or partially, within the main memory 814, within the static memory 816, within the machine-readable medium 820 within the storage unit 818, within at least one of the processors 804 (e.g., within a cache memory of a processor), or within any suitable combination thereof during execution thereof by the machine 800.

[0072] The I / O components 802 may include a variety of components that receive input, provide output, generate output, send information, exchange information, capture measurements, etc. The specific I / O components 802 included in a particular machine 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 is less likely to include such a touch input device. It should be appreciated that the I / O components 802 may include Figure 8820 , and the like. In various examples, the I / O component 802 may include a user output component 826 and a user input component 828. The user output component 826 may include a visual component (e.g., a display such as a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)), an acoustic component (e.g., a speaker), a tactile component (e.g., a vibration motor, a resistance mechanism), other signal generators, etc. The user input component 828 may include an alphanumeric input component (e.g., a keyboard, a touch screen configured to receive alphanumeric input, an optical keyboard, or other alphanumeric input component), a point-based input component (e.g., a mouse, a touch pad, a trackball, a joystick, a motion sensor, or other pointing instrument), a tactile input component (e.g., a physical button, a touch screen or other tactile input component that provides location and force of a touch or touch gesture), an audio input component (e.g., a microphone), etc.

[0073] In other examples, the I / O component 802 may include a biometric component 830, a motion component 832, an environmental component 834, or a position component 836, as well as a wide range of other components. For example, the biometric component 830 includes components 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 832 includes an acceleration sensor component (e.g., an accelerometer), a gravity sensor component, and a rotation sensor component (e.g., a gyroscope).

[0074] Environmental components 834 include, for example, one or more cameras (with still image / photo and video capabilities), lighting sensor components (e.g., photometers), temperature sensor components (e.g., one or more thermometers that detect ambient temperature), humidity sensor components, pressure sensor components (e.g., barometers), acoustic sensor components (e.g., one or more microphones that detect background noise), proximity sensor components (e.g., infrared sensors that detect nearby objects), gas sensors (e.g., gas detection sensors for detecting concentrations of hazardous gases for safety purposes or for measuring pollutants in the atmosphere), or other components that can provide indications, measurements, or signals corresponding to the surrounding physical environment.

[0075] With respect to cameras, client device 106 can have a camera system including, for example, a front-facing camera on a front surface of client device 106 and a rear-facing camera on a rear surface of client device 106. The front-facing camera can be used, for example, to capture still images and videos (e.g., “selfies”) of a user of client device 106, which can then be enhanced with the enhancement data (e.g., filters) described above. The rear-facing camera can be used, for example, to capture still images and videos in a more traditional camera mode, where the images are similarly enhanced with the enhancement data. In addition to the front-facing camera and the rear-facing camera, client device 106 can also include a 360° camera for capturing 360° photos and videos.

[0076] Additionally, the camera system of the client device 106 may include dual rear cameras (e.g., a main camera and a depth sensing camera), or even a triple, quad, or penta rear camera configuration on the front and back sides of the client device 106. For example, these multi-camera systems may include a wide-angle camera, an ultra-wide-angle camera, a telephoto camera, a macro camera, and a depth sensor.

[0077] The location component 836 includes a positioning sensor component (e.g., a GPS receiver component), an altitude sensor component (e.g., an altimeter or barometer that detects air pressure, from which the altitude can be obtained), an orientation sensor component (e.g., a magnetometer), etc.

[0078] A variety of technologies can be used to achieve communication. The I / O component 802 also includes a communication component 838 that is operable to couple the machine 800 to the network 822 or device 824 via a corresponding coupling or connection. For example, the communication component 838 may include a network interface component or other suitable device that interfaces with the network 822. In other examples, the communication component 838 may include a wired communication component, a wireless communication component, a cellular communication component, a near field communication (NFC) component, Components (e.g. Low energy consumption), Components, and other communication components for providing communication via other modalities. Device 824 can be any peripheral device among other machines or a variety of peripheral devices (e.g., a peripheral device coupled via USB).

[0079] In addition, the communication component 838 can detect an identifier or include a component operable to detect an identifier. For example, the communication component 838 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 one-dimensional bar codes such as universal product codes (UPC) bar codes, multi-dimensional bar codes such as quick response (QR) codes, Aztec codes, data matrix, data symbols (Dataglyph), MaxiCode, PDF417, UltraCode, UCC RSS-2D bar codes, 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 obtained via the communication component 838, such as obtaining a location via Internet Protocol (IP) geolocation, ... and obtaining a location via Internet Protocol (IP) geolocation. Positioning is obtained through signal triangulation, positioning is obtained via detection of NFC beacon signals that can indicate a specific position, etc.

[0080] Various memories (e.g., main memory 814, static memory 816, and memory of processor 804) and storage unit 818 may store one or more sets of instructions and data structures (e.g., software) used or implemented by any one or more of the methods or functions described herein. When executed by processor 804, these instructions (e.g., instructions 810) cause various operations to implement the disclosed examples.

[0081] The instructions 810 may be sent or received via a network interface device (e.g., a network interface component included in the communication component 838) using a transmission medium and using any of several well-known transmission protocols (e.g., Hypertext Transfer Protocol (HTTP)) over the network 822. Similarly, the instructions 810 may be sent or received via a coupling (e.g., a peer-to-peer coupling) to the device 824 using a transmission medium.

[0082] Software Architecture

[0083] Fig. 9 900 is a block diagram illustrating a software architecture 904 that may be installed on any one or more of the devices described herein. The software architecture 904 is supported by hardware such as a machine 902 including a processor 920, a memory 926, and an I / O component 938. In this example, the software architecture 904 may be conceptualized as a stack of layers, where each layer provides specific functionality. The software architecture 904 includes layers such as an operating system 912, a library 910, a framework 908, and an application 906. In operation, the application 906 invokes an API call 950 through the software stack and receives a message 952 in response to the API call 950.

[0084] The operating system 912 manages hardware resources and provides public services. The operating system 912 includes, for example, a kernel 914, a service 916, and a driver 922. The kernel 914 acts as an abstraction layer between the hardware and other software layers. For example, the kernel 914 provides memory management, processor management (e.g., scheduling), component management, networking and security settings, and other functions. The service 916 can provide other public services for other software layers. The driver 922 is responsible for controlling or interfacing with the underlying hardware. For example, the driver 922 may include a display driver, a camera driver, or Low-power drivers, Flash drivers, Serial communication drivers (e.g., USB drivers), Drivers, audio drivers, power management drivers, etc.

[0085] The library 910 provides a common low-level infrastructure used by the application 906. The library 910 may include a system library 918 (e.g., a C standard library) that provides functions such as memory allocation functions, string manipulation functions, mathematical functions, etc. In addition, the library 910 may include an API library 924, such as a media library (e.g., a library for supporting the presentation and manipulation of various media formats, such as Moving Picture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC), Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group (JPEG or JPG), or Portable Network Graphics (PNG)), a graphics library (e.g., an OpenGL framework for rendering in two dimensions (2D) and three dimensions (3D) in graphics content on a display), a database library (e.g., SQLite providing various relational database functions), a web library (e.g., WebKit providing web browsing functions), etc. The library 910 may also include a variety of other libraries 928 to provide many other APIs to the application 906.

[0086] The framework 908 provides a common high-level infrastructure used by the applications 906. For example, the framework 908 provides various graphical user interface (GUI) functions, high-level resource management, and high-level positioning services. The framework 908 can provide a wide range of other APIs that can be used by the applications 906, some of which can be specific to a particular operating system or platform.

[0087] In an example, applications 906 may include a home application 936, a contacts application 930, a browser application 932, a book reader application 934, a positioning application 942, a media application 944, a messaging application 946, a game application 948, and a wide variety of other applications such as third-party applications 940. Application 906 is a program that executes the functions defined in the program. Various programming languages ​​can be used to create one or more of the applications 906 constructed in various ways, and the various programming languages ​​are, for example, object-oriented programming languages ​​(e.g., Objective-C, Java, or C++) or procedural programming languages ​​(e.g., C language or assembly language). In a specific example, third-party applications 940 (e.g., those developed by entities other than the vendor of a particular platform using ANDROID TM or IOS TM Software Development Kit (SDK) applications can be developed such as IOS TM ANDROID TM , Mobile software running on the mobile operating system of the phone or other mobile operating system. In this example, the third-party application 940 can activate the API call 950 provided by the operating system 912 to facilitate the functions described in this article.

[0088] Processing components

[0089] Now go to Fig.10 , a diagrammatic representation of a processing environment 1000 is shown, which includes a processor 1002, a processor 1006, and a processor 1008 (eg, a GPU, a CPU, or a combination thereof).

[0090] According to embodiments discussed herein, the processor 1002 is shown coupled to a power source 1004 and is shown to include a processor 1002 that is operatively configured to perform the following operations: Figure 3 Method 300 and Figure 4 The modules (permanently configured or temporarily instantiated) of the operations discussed in the method 400 (deleted), namely, the X component 1010, the Y component 1012, and the Z component 1014.

[0091] Glossary

[0092] "Carrier signal" refers to any intangible medium that can store, encode or carry instructions for machine execution and includes digital or analog communication signals or other intangible media that facilitates communication of such instructions. Instructions may be sent or received over a network using a transmission medium via a network interface device.

[0093] "Client device" refers to any machine that interfaces with a communications 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 communications device that a user may use to access a network.

[0094] "Communications network" means 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 network or a 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 rate for GSM evolution (EDGE) technology, including the third generation partnership project (3GPP) of 3G, fourth generation wireless (4G) network, universal mobile telecommunications system (UMTS), high speed packet access (HSPA), world wide interoperability for microwave access (WiMAX), long term evolution (LTE) standards, other data transmission technologies defined by various standard setting organizations, other long distance protocols, or other data transmission technologies.

[0095] "Component" refers to a device, physical entity or logic with boundaries defined by function or subroutine calls, branch points, 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 processing. Components can be packaged functional hardware units designed for use with other components, and can be part of a program that generally performs specific functions in related functions. Components can constitute software components (e.g., codes implemented 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., independent computer systems, client computer systems or server computer systems) or one or more hardware components (e.g., processors or processor groups) of a computer system can be configured by software (e.g., applications or application parts) to operate as hardware components that perform certain operations 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 system or logic that is permanently configured to perform certain operations. The hardware component may be a dedicated processor, such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC). The hardware component may also include a programmable logic or circuit system that is temporarily configured to perform certain operations by software. For example, the hardware component may include software executed by a general-purpose processor or other programmable processor. Once configured by such 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 the hardware component in a dedicated and permanently configured circuit system or in a temporarily configured circuit system (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, that is, an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g., programmed) to operate in some way or perform certain operations described herein. Considering the embodiment in which the hardware component is temporarily configured (e.g., programmed), each of the hardware components does not need to be configured or instantiated at any one time. For example, in the case where a hardware component includes a general-purpose processor that is configured to become a special-purpose processor by software, the general-purpose processor can be respectively configured as different special-purpose processors (e.g., including different hardware components) at different times. Software accordingly configures one or more specific processors to, for example, constitute a specific hardware component at one time, and to constitute different hardware components at different times. Hardware components can provide information to other hardware components and receive information from other hardware components. Accordingly, the described hardware components can be considered to be coupled in communication.In the case of multiple hardware components being present at the same time, communication can be achieved by signal transmission (e.g., by appropriate circuits and buses) between or among two or more hardware components in the hardware components. In an embodiment in which multiple hardware components are configured or instantiated at different times, communication between such hardware components can be achieved, for example, by storing information in a memory structure accessible to multiple hardware components and retrieving information in the memory structure. For example, a hardware component can perform an operation, and the output of the operation is stored in a memory device coupled to it in communication. Then, other hardware components can access the memory device at a subsequent time to retrieve the stored output and process it. The hardware component can also initiate communication with an input device or an output device, and can operate on resources (e.g., 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 (e.g., by software) or permanently configured to perform related operations. Whether it is temporarily configured or permanently configured, such a processor can constitute a processor-implemented component that operates to perform one or more operations or functions described herein. As used herein, "processor-implemented components" refer to hardware components implemented using one or more processors. Similarly, the method described herein can be implemented at least in part by a processor, wherein one or more specific processors are examples of hardware. For example, at least some of the operations in the operation of the method can be performed by one or more processors 1004 or a component implemented by the processor. In addition, one or more processors can also be operated to support the execution of related operations in a "cloud computing" environment or operate 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), wherein these operations can be accessed via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., API). The execution of certain operations in the operation can be distributed among the processors, not only can reside in a single machine, but also can be deployed across multiple machines. In some example embodiments, a processor or a component implemented by a processor can be located in a single geographic location (e.g., in a home environment, an office environment, or a server cluster). In other example embodiments, a processor or a component implemented by a processor can be distributed across multiple geographic locations.

[0096] "Computer-readable storage media" refers to both machine storage media and transmission media. Therefore, these terms include both storage devices / media and carrier waves / modulated data signals. The terms "machine-readable medium," "computer-readable medium," and "device-readable medium" mean the same thing and may be used interchangeably in this disclosure.

[0097] "Ephemeral messages" are messages that are accessible for a limited duration. Ephemeral messages can be text, images, videos, etc. The access time for ephemeral messages can be set by the message sender. 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.

[0098] "Machine storage media" refers to a single or multiple storage devices and media (e.g., centralized or distributed databases, and associated caches and servers) that store executable instructions, routines, and data. Thus, the term should be considered to include, but is not limited to, solid-state memory and optical and magnetic media, including memory internal or external to the processor. Specific examples of machine storage media, computer storage media, and device storage media include: non-volatile memory, including, for example, semiconductor memory devices such as erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), FPGA, and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The terms "machine storage media", "device storage media", and "computer storage media" mean the same thing and may be used interchangeably in this disclosure. The terms "machine storage media", "computer storage media", and "device storage media" expressly exclude carrier waves, modulated data signals, and other such media, at least some of which are encompassed by the term "signal media".

[0099] “Non-transitory computer-readable storage medium” refers to tangible media capable of storing, encoding, or carrying instructions to be executed by a machine.

[0100] "Signal media" refers to any intangible medium that can store, encode or carry instructions executed by a machine and includes digital or analog communication signals or other intangible media that facilitate the communication of software or data. The term "signal medium" should be deemed to include any form of modulated data signals, carrier waves, etc. The term "modulated data signal" means a signal whose one or more characteristics are set or changed in such a manner as to encode information in the signal. The terms "transmission medium" and "signal medium" mean the same thing and may be used interchangeably in this disclosure.

Claims

1. A method comprising: causing display of image data at a client device, the image data comprising a depiction of an object, the depiction comprising a graphical code at a location on the object; detecting the graphical code at the location on the depiction of the object based on the image data; accessing media content in a media repository based on the graphical code; as well as A rendering of the media content is caused to be displayed at the client device at the location of the graphical code on the depiction of the object.

2. The method according to claim 1, wherein: The graphical code includes a border, and wherein causing the rendering of the media content to be displayed at the location of the graphical code on the depiction of the object further comprises: The media content is caused to be displayed within the border of the graphic code.

3. The method according to claim 1, further comprising: receiving input selecting said presentation of said media content; as well as The media content is executed in response to the input selecting the presentation of the media content.

4. The method according to claim 3, wherein: The media content includes video data.

5. The method according to claim 3, wherein: The media content includes interactive content, the interactive content including a display of a set of interactive icons, the set of interactive icons including at least a first interactive icon corresponding to a media action, wherein the input selects the first interactive icon, and wherein executing the media content in response to the input selecting the presentation of the media content includes: In response to the input selecting the first interactive icon, the media action corresponding to the first interactive icon is performed.

6. The method according to claim 1, wherein: The graphic code includes a QR code.

7. The method according to claim 1, wherein: Causing the presentation of the media content to be displayed at the client device at the location of the graphical code on the depiction of the object further comprises: determining an orientation of the object; and Based on the orientation of the object, the presentation of the media content is caused to be displayed.

8. A system comprising: one or more processors of a machine; as well as a memory storing instructions that, when executed by at least one of the one or more processors, cause the machine to perform operations comprising: causing display of image data at a client device, the image data comprising a depiction of an object, the depiction comprising a graphical code at a location on the object; detecting the graphical code at the location on the depiction of the object based on the image data; accessing media content in a media repository based on the graphical code; and A rendering of the media content is caused to be displayed at the client device at the location of the graphical code on the depiction of the object.

9. The system according to claim 8, wherein: The graphical code includes a border, and wherein causing the rendering of the media content to be displayed at the location of the graphical code on the depiction of the object further comprises: The media content is caused to be displayed within the border of the graphic code.

10. The system according to claim 8, further comprising: receiving input selecting said presentation of said media content; as well as The media content is executed in response to the input selecting the presentation of the media content.

11. The system according to claim 10, wherein: The media content includes video data.

12. The system according to claim 10, wherein: The media content includes interactive content, the interactive content including a display of a set of interactive icons, the set of interactive icons including at least a first interactive icon corresponding to a media action, wherein the input selects the first interactive icon, and wherein executing the media content in response to the input selecting the presentation of the media content includes: In response to the input selecting the first interactive icon, the media action corresponding to the first interactive icon is performed.

13. The system according to claim 8, wherein: The graphic code includes a QR code.

14. The system according to claim 8, wherein: Causing the presentation of the media content to be displayed at the client device at the location of the graphical code on the depiction of the object further comprises: determining an orientation of the object; and The presentation of the media content is caused to be displayed based on the orientation of the object.

15. A machine-readable storage medium comprising instructions that, when executed by one or more processors of a machine, cause the machine to perform operations comprising: causing display of image data at a client device, the image data comprising a depiction of an object, the depiction comprising a graphical code at a location on the object; detecting the graphical code at the location on the depiction of the object based on the image data; accessing media content in a media repository based on the graphical code; as well as A rendering of the media content is caused to be displayed at the client device at the location of the graphical code on the depiction of the object.

16. The machine-readable storage medium of claim 15, wherein: The graphical code includes a border, and wherein causing the rendering of the media content to be displayed at the location of the graphical code on the depiction of the object further comprises: The media content is caused to be displayed within the border of the graphic code.

17. The machine-readable storage medium of claim 15, further comprising: receiving input selecting said presentation of said media content; as well as The media content is executed in response to the input selecting the presentation of the media content.

18. The machine-readable storage medium of claim 17, wherein: The media content includes video data.

19. The machine-readable storage medium of claim 17, wherein: The media content includes interactive content, the interactive content including a display of a set of interactive icons, the set of interactive icons including at least a first interactive icon corresponding to a media action, wherein the input selects the first interactive icon, and wherein executing the media content in response to the input selecting the presentation of the media content includes: In response to the input selecting the first interactive icon, the media action corresponding to the first interactive icon is performed.

20. The machine-readable storage medium of claim 15, wherein: The graphic code includes a QR code.