Multi-user camera switching icon during a video call

An ad hoc network system with a feed manager and switch icon allows users to select and view data feeds from multiple devices, addressing the limitation of single-perspective viewing in existing systems, enhancing insights in various sectors.

JP7795278B2Active Publication Date: 2026-01-07INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2023570349
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-06-08
Filing Date
2022-04-22
Publication Date
2026-01-07
Estimated Expiration
2042-04-22

AI Technical Summary

Technical Problem

Existing systems limit the view of an area to a single perspective, making it difficult for observers to gain comprehensive insights without practical means to move or install additional cameras or sensors.

Method used

A method and system for forming an ad hoc network among devices, enabling multi-user camera switching through a feed manager that allows users to select and view data feeds from any device in the network, with a switch icon facilitating access to multiple perspectives.

Benefits of technology

Enables flexible selection and viewing of data feeds from various devices, overcoming practical limitations of movement or installation, applicable in sectors like education, public safety, and social events.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007795278000001
    Figure 0007795278000001
  • Figure 0007795278000002
    Figure 0007795278000002
  • Figure 0007795278000003
    Figure 0007795278000003
Patent Text Reader

Abstract

A computer-implemented method for sharing a data feed between devices. The method includes identifying a plurality of devices including a first device, where each device of the plurality of devices is within a vicinity of the first device. The method also includes forming an ad-hoc network including each device of the plurality of devices. The method further includes determining a plurality of available data feeds, where each data feed is associated with one device of the plurality of devices. The method includes constructing a switch icon, where the switch icon includes a view of each available data feed, where the switch icon allows access to any feed of the plurality of feeds and is configured to display a selected feed from the switch icon. The method includes transmitting the switch icon to each device in the ad-hoc network.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates to data sharing, and more particularly to multi-user camera switching in short-range networks. [Background technology]

[0002] Generally, the view of an area is limited to one or two perspectives of an observer (e.g., person, camera, etc.). The observer may gain additional insight into the scene / object if viewed from additional perspectives. Summary of the Invention

[0003] A computer-implemented method for sharing data feeds between devices is disclosed. The method includes identifying a plurality of devices, including a first device, where each device of the plurality of devices is within communicative proximity of the first device. The method also includes forming an ad hoc network including each device of the plurality of devices. The method further includes determining a plurality of available data feeds, where each data feed is associated with one device of the plurality of devices. The method also includes constructing a switch icon, where the switch icon includes a view of each available data feed, the switch icon enabling access to any feed of the plurality of feeds and configured to display a selected feed from the switch icon. The method further includes transmitting the switch icon to each device in the ad hoc network. Further aspects of the present disclosure are directed to systems and computer program products including functionality consistent with the above-described methods.

[0004] This summary is not intended to describe each aspect, every implementation, or every embodiment, or combination, of the present disclosure.

[0005] Various embodiments are described herein with reference to different subject matter. In particular, some embodiments may be described with reference to methods, while other embodiments may be described with reference to devices and systems. Nevertheless, those skilled in the art will know from the above and following description that, unless otherwise indicated, any combination of features belonging to one type of subject matter, as well as any combination between features relating to different subject matters, particularly between method features and device and system features, is considered to be disclosed in this document.

[0006] The above-defined aspects, and further aspects disclosed herein, will be apparent from and will be elucidated with reference to one or more example embodiments to be described hereinafter, without the invention being limited thereto. Various embodiments are described, by way of example only, and with reference to the following drawings, in which: [Brief explanation of the drawings]

[0007] [Figure 1] 1 is a diagram of a cloud computing environment in accordance with an embodiment of the present invention. [Figure 2] FIG. 2 is a diagram of abstraction model layers according to an embodiment of the present invention. [Figure 3] FIG. 1 is a block diagram of a DPS according to one or more embodiments disclosed herein. [Figure 4] FIG. 1 is a functional diagram of a computing environment suitable for operation of a feed manager according to some embodiments of the present disclosure. [Figure 5A] FIG. 1 is a front view of a network device having a collapsed switch icon, according to some embodiments of the present disclosure. [Figure 5B] FIG. 1 is a front view of a network device with an enlarged switching icon, according to some embodiments of the present disclosure. [Figure 5C] FIG. 1 is a rear view of a network device according to some embodiments of the present disclosure. [Figure 6]10 is a flowchart of an example method for enabling multi-user camera switching, according to some embodiments of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0008] The present disclosure relates to data sharing, and more particularly to multi-user camera switching in short-range networks.

[0009] Although this disclosure includes detailed descriptions of cloud computing, it should be understood that implementation of the teachings recited herein is not limited to cloud computing environments. Rather, embodiments of the present invention are capable of being implemented in conjunction with any other type of computing environment now known or later developed.

[0010] Cloud computing is a service delivery model that enables convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be quickly provisioned and released with minimal administrative effort or interaction with the service provider. This cloud model may include at least five characteristics, at least three service models, and at least four deployment models.

[0011] The characteristics are as follows:

[0012] On-demand self-service: Cloud users can unilaterally provide computing capacity, such as server time and network storage, automatically as needed, without the need for human interaction with the service provider.

[0013] Broad Network Access: Capabilities are available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and personal digital assistants (PDAs)).

[0014] Resource Pooling: Provider computing resources are pooled to serve multiple consumers using a multi-tenant model, with various physical and virtual resources dynamically allocated and reallocated according to demand. Location independence is meant in that consumers generally have no control or knowledge of the exact location of the resources provided, but may specify location at a higher level of abstraction (e.g., country, state, or data center).

[0015] Rapid Elasticity: Capacity can be rapidly and elastically provisioned, sometimes automatically, to quickly scale out, and rapidly released to quickly scale in. To the consumer, the capacity available for provisioning often appears unlimited, and can be purchased at any time and in any quantity.

[0016] Measured Services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at several levels of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource utilization can be monitored, controlled, and reported, providing transparency to both providers and consumers of the services used.

[0017] The service model is as follows:

[0018] Software as a Service (SaaS): The consumer is provided with the ability to use the provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through a thin-client interface, such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or possibly individual application capabilities, with the possible exception of limited user-specific application configuration settings.

[0019] Platform as a Service (PaaS): The ability provided to a consumer is to deploy consumer-created or acquired applications, created using programming languages ​​and tools supported by the provider, onto a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage, but rather exercises control over the deployed applications and, in some cases, the application hosting environment configuration.

[0020] Infrastructure as a Service (IaaS): The capability provided to a customer is the provision of processing, storage, networking, and other basic computing resources on which the customer can deploy and run any software, which may include operating systems and applications. The customer does not manage or control the underlying cloud infrastructure, but rather exercises control over the operating systems, storage, deployed applications, and, in some cases, limited control over selected networking components (e.g., host firewalls).

[0021] The deployment model is as follows:

[0022] Private Cloud: The cloud infrastructure is operated solely for the organization. The cloud infrastructure may be managed by the organization or a third party and may be on-site or off-site.

[0023] Community Cloud: Cloud infrastructure is shared by several organizations and supports a unique community of shared concerns (e.g., mission, security requirements, policies, and compliance considerations). The cloud infrastructure may be managed by the organization or a third party and may be on-site or off-site.

[0024] Public Cloud: Cloud infrastructure is made available to the general public or large industry groups and is owned by organizations that sell cloud services.

[0025] Hybrid Cloud: A cloud infrastructure is a composite of two or more clouds (private, community, or public) that remain unique entities but are tied together by standard or proprietary technologies that enable data and application portability (e.g., cloud bursting for load balancing between clouds).

[0026] Cloud computing environments are service-oriented, with a focus on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that includes a network of interconnected nodes.

[0027] Referring now to FIG. 1, an illustrative cloud computing environment 50 is depicted. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10 with which local computing devices used by cloud users, such as, for example, a personal digital assistant (PDA) or cellular phone 54A, a desktop computer 54B, a laptop computer 54C, or an automobile computer system 54N, or combinations thereof, may communicate. The nodes 10 may also communicate with each other. The nodes 10 may be physically or virtually grouped in one or more networks (not shown), such as a private, community, public, or hybrid cloud, or combinations thereof, as described above. This enables the cloud computing environment 50 to provide infrastructure, platform, and / or software as a service without the cloud user having to maintain resources on their local computing device. It is understood that the types of computing devices 54A-N shown in FIG. 1 are intended to be illustrative only, and that computing node 10 and cloud computing environment 50 can communicate with any type of computerized device over any type of network and / or network-addressable connection (e.g., using a web browser).

[0028] Referring now to Figure 2, a set of functional abstraction layers provided by cloud computing environment 50 (Figure 1) is shown. It should be understood in advance that the components, layers, and functions shown in Figure 2 are intended to be illustrative only, and embodiments of the present invention are not limited thereto. As depicted, the following layers and corresponding functions are provided:

[0029] Hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframe 61, RISC (reduced instruction set computer) architecture-based servers 62, servers 63, blade servers 64, storage devices 65, and network and networking components 66. In some embodiments, software components include network application server software 67 and database software 68.

[0030] The virtualization layer 70 provides an abstraction layer within which examples of virtual entities such as virtual servers 71, virtual storage 72, virtual networks including virtual private networks 73, virtual applications and operating systems 74, and virtual clients 75 can be provided.

[0031] In one example, management layer 80 may provide the functions described below. Resource provisioning 81 dynamically procures computing and other resources utilized to perform tasks within the cloud computing environment. Metering and pricing 82 tracks costs as resources are utilized within the cloud computing environment and bills or invoices for the usage of these resources. In one example, these resources may include application software licenses. Security validates cloud subscribers and tasks and protects data and other resources. User portal 83 provides subscribers and system administrators with access to the cloud computing environment. Service level management 84 allocates and manages cloud computing resources to ensure required service levels are met. Service level agreement (SLA) planning and fulfillment 85 pre-provisions and procures cloud computing resources to anticipate future requirements according to SLAs.

[0032] The workload layer 90 provides examples of functions for which a cloud computing environment may be utilized. Examples of workloads and functions that may be provided from this layer include mapping and navigation 91, software development and lifecycle management 92, virtual classroom instruction delivery 93, data analytics processing 94, transaction processing 95, and data feed selection 96.

[0033] General Data Processing System

[0034] 3 is a block diagram of an example data processing system (DPS) according to one or more embodiments. The DPS may be used as a cloud computing node 10. In this illustrative example, the DPS 100 may include a communication bus 102, which may provide communication between a processor unit 104, a memory 106, persistent storage 108, a communication unit 110, an input / output (I / O) unit 112, and a display 114.

[0035] Processor unit 104 functions to execute instructions for software that may be loaded into memory 106. Processor unit 104 may be several processors, a multi-core processor, or some other type of processor, depending on the particular implementation. As used herein while referring to an item, a number means one or more items. Furthermore, processor unit 104 may be implemented using several heterogeneous processor systems, in which a main processor resides on a single chip along with secondary processors. As another illustrative example, processor unit 104 may be a symmetric multiprocessor system including multiple processors of the same type.

[0036] Memory 106 and persistent storage 108 are examples of storage devices 116. A storage device may be any hardware capable of storing information, such as, without limitation, data, functional program code, or other suitable information, or a combination thereof, on a temporary or permanent basis. Memory 106, in these examples, may be, for example, random access memory or any other suitable volatile or non-volatile storage device. Persistent storage 108 may take various forms depending on the particular implementation.

[0037] For example, persistent storage 108 may include one or more components or devices. For example, persistent storage 108 may be a hard drive, flash memory, a rewritable optical disk, a rewritable magnetic tape, or some combination of the above. The media used by persistent storage 108 may also be removable. For example, a removable hard drive may be used for persistent storage 108.

[0038] The communication unit 110 in these examples may provide for communication with other DPSs or devices. In these examples, the communication unit 110 is a network interface card. The communication unit 110 may communicate using either or both physical and wireless communication links.

[0039] Input / output unit 112 may allow for the input and output of data with other devices that may be connected to DPS 100. For example, input / output unit 112 may provide a connection for user input through a keyboard, a mouse, or some other suitable input device, or a combination thereof. Additionally, input / output unit 112 may send output to a printer. Display 114 may provide a mechanism for displaying information to a user.

[0040] Instructions for the operating system, applications, and / or programs may be located in storage device 116, which is in communication with processor unit 104 through communications bus 102. In these illustrative examples, the instructions are in functional form on persistent storage 108. These instructions may be loaded into memory 106 for execution by processor unit 104. The processes of the different embodiments may be performed by processor unit 104 using computer-implemented instructions, which may be located in a memory, such as memory 106.

[0041] These instructions are referred to as program code, computer usable program code, or computer readable program code, which may be read and executed by a processor in processor unit 104. The program code in the different embodiments may be embodied on different physical or tangible computer readable media, such as memory 106 or persistent storage 108.

[0042] Program code 118 may be located in a functional form on computer-readable medium 120, which is selectively removable, and may be loaded or transferred to DPS 100 for execution by processor unit 104. Program code 118 and computer-readable medium 120, in these examples, may form computer program product 122. In one example, computer-readable medium 120 may be computer-readable storage medium 124 or computer-readable signal medium 126. Computer-readable storage medium 124 may include, for example, an optical or magnetic disk inserted into or placed in a drive or other device that is part of persistent storage 108 for transfer to a storage device, such as a hard drive that is part of persistent storage 108. Computer-readable storage medium 124 may also be a form of persistent storage, such as a hard drive, thumb drive, or flash memory, connected to DPS 100. In some cases, computer-readable storage medium 124 may not be removable from DPS 100.

[0043] Alternatively, program code 118 may be transported to DPS 100 using computer-readable signal medium 126. Computer-readable signal medium 126 may be, for example, a propagated data signal containing program code 118. For example, computer-readable signal medium 126 may be an electromagnetic signal, an optical signal, or any other suitable type of signal, or a combination thereof. These signals may be transmitted over communications links, such as wireless communications links, fiber optic cable, coaxial cable, a wire, or any other suitable type of communications link, or a combination thereof. In other words, communications links and / or connections may be physical or wireless, in illustrative examples.

[0044] In some demonstrative embodiments, program code 118 may be downloaded to persistent storage 108 via computer-readable signal medium 126 from another device or DPS over a network for use within DPS 100. For example, program code stored on a computer-readable storage medium of a server DPS may be downloaded from the server over a network to DPS 100. The DPS providing program code 118 may be a server computer, a client computer, or some other device capable of storing and transmitting program code 118.

[0045] The different components illustrated for DPS 100 are not intended to provide architectural limitations to the manner in which different embodiments may be implemented. Various illustrative embodiments may be implemented in a DPS including components in addition to or instead of those illustrated for DPS 100. Other components illustrated in FIG.

[0046] Generally, the view of an area for a particular observer is limited to a single perspective (e.g., person, camera, etc.). The observer may gain additional insight into the scene / object if they view from additional perspectives. In some scenarios, it may be impractical for a person to move to obtain all or at least more potential perspectives. For example, obstacles (e.g., crowds, fences, etc.) prevent the user from moving to obtain a desired vantage point. Additionally, installing a camera (or other sensor / vision device) in the field may be impractical or prohibitively expensive. Impracticality may arise from the transient nature of the scene / object, or the lack of infrastructure, or both.

[0047] Embodiments of the present disclosure include methods and systems that allow users to have the flexibility to select and view any data feed (e.g., video, temperature sensors) from any device coupled to an ad hoc network. As an example, an event may occur on a stage. A spectator watching on the left side may have difficulty seeing what is happening on the right side of the stage, and vice versa. Embodiments of the present disclosure allow spectators to form an ad hoc mesh network with devices and select a camera view from any of the connected devices. This allows a spectator on the left side to select a video view from a spectator on the right side and view the captured video stream from the spectator on the right side. Embodiments of the present disclosure can be deployed to benefit a variety of sectors, including education (e.g., classrooms, field trips, etc.), public safety (e.g., firefighting, search and rescue, etc.), sporting events, and social events (e.g., concerts, tourism, etc.), among others.

[0048] Embodiments of the present disclosure include a feed manager configured to enable switching between various data feeds from devices in a network. In some embodiments, the feed manager can identify other devices that will form the network together. In some embodiments, the feed manager forms the network. In some embodiments, the network is a mesh network. A mesh network can be a network in which each node can connect directly to any other node in the network in a non-hierarchical manner. In a mesh network, any device can be a host to any other device in the network and a client to other devices. Networks are formed ad-hoc and / or by request. An ad-hoc network can be a network formed and / or used for a limited purpose, such as temporarily sharing a data feed among a group of mobile devices. Ad-hoc networks can be created and closed by the feed manager. In some embodiments, the network can be based on devices running / including similar applications. In some embodiments, each feed / device can opt in and / or out of sending / receiving any feed to / from the network. Opting in / out can occur at any time (e.g., after forming a network, while currently sharing a feed, etc.).

[0049] In some embodiments, the feed manager can identify the relative location of each device in the network. Location can be determined using known methods, such as triangulation (e.g., cellular networks), sound profiles, GPS, and the like. In some embodiments, the feed manager can identify the subject of the view. For example, if multiple cameras in the network are focused on a campfire, the system can identify the campfire as the subject.

[0050] In some embodiments, the data manager can generate a camera switch icon. The camera switch icon can be a display showing each available data feed (e.g., camera). A user can select, via input, which data stream to view. In some embodiments, the switch icon can include the relative positioning and / or orientation (if relevant) of the data feeds of any data source.

[0051] In some embodiments, the feed manager can select a primary device. The primary device can be any device on the network. In some embodiments, the primary device is pre-selected (e.g., by the network initiator, etc.). In some embodiments, the primary device can manage the view of all other devices in the network. For example, in a classroom environment, an instructor uses the primary device and can select any view for all of the students on the network. In some embodiments, each device can select any data feed from the network. For example, device A can be displaying the feed from device B's camera, device B can be displaying the feed from device C's camera, etc. In some embodiments, the primary device is selected based on objective factors. For example, each device on the network can vote on which device is the primary device. As another example, the device that shares a feed with the most other network devices can be the primary device. In some embodiments, the primary device can change while the network is operational. In some embodiments, the primary device is selected based on data input. For example, if each device included a thermometer, the primary device could be the device that reads the highest (or lowest) temperature. Similarly, if each device included a microphone, the primary device could be the device that reads the highest (or lowest) level of sound. In some embodiments, the feed manager can provide previews of various feeds. The previews can be snapshots of the data feeds.

[0052] The aforementioned advantages are examples of advantages, and there are embodiments that can include all, some, or none of the aforementioned advantages while still being within the scope of this disclosure.

[0053] Referring now in more detail to various embodiments of the present disclosure, Figure 4 is a diagram of a computing environment 400 in which a feed manager according to one or more embodiments of the present disclosure may be implemented. Many modifications to the depicted environment may be made by one skilled in the art without departing from the scope of the present disclosure.

[0054] Computing environment 400 includes host 410, primary device 420, additional device 430(1), additional device 430(2), and additional device 430(n), and network 450, where n may be any positive natural number. Additional devices 430(1) through 430(n) may be referred to individually, separately, collectively, or in any combination thereof as additional devices 430. In some embodiments, computing environment 400 may be included in a cloud computing environment (e.g., cloud computing environment 50).

[0055] Network 450 can be, for example, a telecommunications network, a local area network (LAN), a wide area network (WAN) such as the Internet, or a combination of the three, and can include wired, wireless, or fiber optic connections. Network 450 may include one or more wired and / or wireless networks capable of receiving and transmitting data, voice, and / or video signals, including multimedia signals including voice, data, and video information. In general, network 450 may be any combination of connections and protocols that support communication between and among host 410, primary device 420, additional device 430, and other computing devices (not shown) in computing environment 400. In some embodiments, host 410, primary device 420, and / or additional device 430 may include a computer system, such as data processing system 100 of FIG. 3.

[0056] In some embodiments, network 450 may be an ad-hoc and / or mesh network. In various embodiments, network 450 uses one or more of cellular radio frequencies, Bluetooth / Wi-Fi radio frequencies, audio, and / or optical to communicate between various devices of computing environment 400.

[0057] Host 410 can be a standalone computing device, a management server, a web server, a mobile computing device, or any other electronic device or computing system capable of receiving, transmitting, and processing data. In some embodiments, host 410 can represent a server computing system that utilizes multiple computers as a server system, such as in a cloud computing environment (e.g., cloud computing environment 50). In some embodiments, host 410 includes feed manager 412 and icon generator 414. In some embodiments, host 410 can be combined with (or included within) one or more of primary device 420 and additional device 430.

[0058] The feed manager 412 can be any combination of hardware and / or software configured to enable the selection of data feeds among devices in the network. Each data feed can be generated by and / or received from another device in the network. In some embodiments, the feed manager 412 includes an icon generator 414, but is still shown as being separate for purposes of discussion.

[0059] In some embodiments, the feed manager 412 can select a primary device. In some embodiments, the feed manager 412 can designate / select a primary device 420 as the primary device from the devices in the network. In some embodiments, the primary device can control the data flow to other devices. In some embodiments, the primary device can select the feed that will be sent to all / some of the other devices, while secondary devices only receive feeds and cannot select them. The primary device can be pre-configured. For example, the device that initiates the ad-hoc network can be the primary device. In some embodiments, the primary device can be based on sensor data. For example, the device reading the highest temperature can be designated as the primary device.

[0060] In some embodiments, all devices have equal permissions. For example, each device can select feeds from any other device without restriction or limitation. This can be thought of as if all devices are primary devices, or none of the devices are primary devices, or both.

[0061] Icon generator 414 can be any combination of hardware and / or software configured to generate feed switching icons (e.g., switching icon 424). In some embodiments, icon generator 414 can determine the number of devices that have joined the ad hoc network. In some embodiments, icon generator 414 can receive from each device the number of cameras and / or sensors on the connected device in response to the device joining the network.

[0062] In some embodiments, the icon generator 414 can obtain location data from each device in the network. The location data can include one or more of global positioning system (GPS) data, network data (e.g., triangulation using a cellular network), sound profiles, and other similar methods. In some embodiments, the icon generator 414 can use the location data to determine the position of each device relative to other devices in the network.

[0063] In some embodiments, the icon generator 414 can indicate which device is the primary device (if a primary device is present). In some embodiments, the icon generator 414 can determine the object / focus of the ad hoc network. In some embodiments, the focus can be based on inputs received by the primary device. For example, if the primary device is controlled by a fire captain, the inputs received by the device operated by the fire captain can become the focus point (or focus area, or focus object). For example, if the captain is switching between two feeds focused on the same location (or if he or she spends most of his or her time looking at this location), the icon generator 414 can determine the focus area based on these inputs. Inputs can include the number of devices selecting a particular data stream, a directional view combination (e.g., when two devices are far apart and facing each other, the focus area can be between the two devices), time spent on a feed, relative location, audio input (e.g., recognizing attention-grabbing input combined with direction), and other similar inputs. The icon generator 414 can use image processing to determine if several devices are pointed towards a common object.

[0064] In some embodiments, the icon generator 414 can show the relative location of the focus object within the display. The overall icon can include one or more of each device in the network, each data feed in the network, the relative location of each feed / device, the primary device, and / or the focus object.

[0065] The primary device 420 can be any computing device, electronic device, or computing system capable of receiving, transmitting, and processing data. In some embodiments, the primary device 420 is a smart device, such as a smart phone, a smart watch, smart glasses, or another similar device, or a combination thereof. In some embodiments, the primary device 420 is configured to participate in an ad-hoc network with other computing devices. In some embodiments, the primary device 420 can transmit a selected feed to all / some of the connected devices.

[0066] In some embodiments, the primary device 420 includes an application 421 , a camera 422 , a sensor 423 , and a switching icon 424 .

[0067] Application 421 can be any combination of hardware and / or software configured to perform functions on a computing device (e.g., primary device 420). In some embodiments, application 421 is a web application. In some embodiments, application 421 can represent any number of separate applications. In some embodiments, application 421 can be running within a cloud computing environment. In some embodiments, application 421 can initiate the formation of an ad-hoc network. In some embodiments, application 421 generates a data feed. The data feed can be based on one or more sensors on primary device 420. For example, the feed can be a video feed from a camera or a temperature feed from a thermometer / infrared detector, or both.

[0068] The camera 422 can be any combination of hardware and / or software configured to capture image data from the primary device 420. In some embodiments, the primary device 420 includes two or more separate cameras. Each camera can be pointed in a different direction (e.g., on either side of the device). In some embodiments, the camera 422 can capture video streams and still photos.

[0069] Sensor 423 can be any sensor attached to primary device 420 configured to collect data. There can be any number of sensors on the device. In some embodiments, sensor 423 can be any sensor not including camera 422 (as a camera can be a sensor). Sensor 423 can include one or more of a microphone, thermometer, infrared sensor, auditory sensor, barometer, gyroscope, compass, accelerometer, and the like. In some embodiments, data captured by camera 422 and one or more sensors 423 can be combined to create a single data stream. For example, camera 422 can capture video and microphone sound, and the two can be combined as a video stream with sound.

[0070] The switching icon 424 may be integrated with a display on the primary device 420. In some embodiments, the switching icon 424 enables functionality for selecting a data feed. In some embodiments, the switching icon 424 may show each available feed for selection. The display may be a list display. The list may show an identifier for the device. The identifier may be automatically generated and / or entered by the device user. In some embodiments, a device may have more than one available feed (e.g., two cameras). The switching icon 424 may show the available feeds as separate options.

[0071] In some embodiments, the switching icon 424 can indicate the relative location of each device (or feed, or source of the feed). In some embodiments, the switching icon 424 can uniquely indicate the relative location of the primary device 420, or the subject of the feed, or both. This is discussed further in connection with FIG. 5.

[0072] Additional device 430 can be any computing device, electronic device, or computing system capable of receiving, transmitting, and processing data. In some embodiments, additional device 430 can be combined with components of host 410. Each or any additional device 430 can include any or all of the components in host 410. In some embodiments, each additional device can have the functionality and subcomponents of primary device 420 (e.g., application 421, camera 422, etc.).

[0073] In some embodiments, "primary device" and "additional device" are network designations and are permanently assigned to specific devices. In some embodiments, the device considered the primary device can change dynamically. As the scenario changes, the device considered the primary device changes from the first device in the network to the second device. Additionally, the switching icon 424 can be updated based on changes on each device in the network.

[0074] 5A-5C depict one embodiment of a computing device 520. The device can be any one of a host 410, a primary device 420, or an additional device 430, or a combination thereof. A switching icon 524 is depicted at the bottom of a display area 550.

[0075] FIG. 5A shows the front of device 520. The illustrated embodiment is an example similar to a smartphone. Device 520 includes display area 550. At the top of device 520 is camera 522, which may be coincident with camera 422. Toggle icon 524 is shown on display 550, which may be coincident with toggle icon 424. FIG. 5A shows toggle icon 524 in a collapsed state. Toggle icon 524 may expand and collapse in response to receiving input to the device.

[0076] FIG. 5B depicts the same device as FIG. 5A (i.e., device 520), but with the switch icon 524 enlarged. Device 520 includes a camera 522, a display area 550, and an enlarged switch icon 524. Within the enlarged switch icon 524, subject device 563, additional device indicators 561, and the feed subject / object at 562 are depicted, respectively. Each type / class of device / object can have a unique identifier. The identifier can be a shape, color, name, or any other manner, or combination thereof, that indicates an available feed. The location within switch icon 524 can be a relative position as determined by an icon generator (e.g., icon generator 414). As the device moves around, switch icon 524 can be dynamically updated based on changes in location / feed data. In some embodiments, each representation within switch icon 524 can include a directional indicator (not shown). The directional indicator can indicate the direction from which data is acquired, the direction the sensor is pointing, or both. For example, if each device includes a camera, an arrow indicating the direction the camera is pointing may be included with each additional device indicator 561.

[0077] In some embodiments, the object of the feed 552 can be determined. The determination can be based on an analysis of each of the feeds. For example, if some of the video feeds may contain flames, the object can be identified as a campfire. The focus object can be determined using image recognition or compass and location data, or both, to determine the direction and relative location of the object. This can allow the user of the subject device 563 to see that other views of the object 562 are available from different vantage points.

[0078] 5C depicts the back of device 520, including camera 522 and sensor 523. Camera 522 may be a second camera on the device. Sensor 523 may be consistent with sensor 423. In some embodiments, additional sensors and / or cameras may be located anywhere on the front and / or back of device 520.

[0079] 6 depicts a flowchart of an example method 600 for selecting a data feed from an ad hoc network that may be implemented in a computing environment (e.g., computing environment 400 and / or cloud computing environment 50). One or more of the above-described advantages and improvements for selecting a data stream from an ad hoc network may be achieved by method 600 consistent with various embodiments of the present disclosure.

[0080] Method 600 can be performed by one or more processors, host 410, primary device 420, secondary device 430, subcomponents thereof, and / or different combinations of hardware, software, or both. In various embodiments, various operations of method 600 are performed by one or more of host 410, feed manager 412, icon generator 414, primary device 420, application 421, camera 422, sensor 423, toggle icon 424, or additional device 430. For purposes of illustration, method 600 will be described as being performed by feed manager 412.

[0081] In operation 602, the feed manager 412 identifies one or more devices. In some embodiments, the feed manager 412 can be included in the first device. In some embodiments, the identification can be based on an application. An application on the device can be configured to notify other devices that other devices are available in the vicinity (or communicative proximity). The notification can include notifying other devices that the device can / may form an ad hoc network, notifying the device that additional devices are nearby, or both. The proximity can be based on location, a predetermined event (e.g., a concert, a sporting event, a class, etc.), distance (e.g., distance between devices, limitations on network capacity, and the like). In some embodiments, the application can send a request to all devices within range. Each device can respond to the request based on receiving input from a user, based on a predetermined configuration of the application, or both.

[0082] In operation 604, the feed manager 412 forms an ad hoc network. In some embodiments, each identified device joins the network as a node. In some embodiments, the ad hoc network is a mesh network. In operation 606, the feed manager 412 determines available data feeds. In some embodiments, the available data feeds are transmitted to the feed manager 412 in response to forming the ad hoc network. Each device may transmit all available feeds. In some embodiments, each device may add and / or remove data feeds from the network. For example, if a device has two cameras and another sensor, the device may enable access to one of the cameras. In this scenario, the second camera and sensor is not an available feed.

[0083] In operation 608, feed manager 412 generates / creates / constructs a switch icon (e.g., switch icon 424). In some embodiments, the switch icon is created by icon generator 414. In some embodiments, generating the switch icon includes determining the location of each device relative to one or more other devices / feeds in the network. In some embodiments, operation 608 includes sending the switch icon to each device in the network.

[0084] In operation 610, the feed manager 412 shares all data feeds to each device. In some embodiments, the feed sharing is based on input to each device. The input can dictate which feeds should be displayed on any particular device.

[0085] In operation 612, the feed manager 412 updates the network and switching icons. In some embodiments, devices may move in and out of proximity of the mesh network. In some embodiments, new devices can be dynamically added and / or removed from the ad hoc network. In some embodiments, operation 612 includes re-performing one or more of operations 602 through 608 for each device that moves in and out of proximity and / or the network. In some embodiments, one or more of operations 602 through 610 are re-performed based on movement of one or more devices and / or focus objects.

[0086] In some embodiments, operation 612 and / or operation 608 includes identifying a focus object. The determination can be based on analyzing the feed. For example, an image recognition process can be used to determine if all / most of the cameras are pointed at a common object. The direction of the feed (e.g., the direction the camera is pointing), the time the feed is viewed, and other similar factors can be included in the object determination. In some embodiments, there is no object determination. In some embodiments, the focus object can change. The switching icon can be dynamically updated in response to identifying a new focus object, a moving focus object, or both. In some embodiments, the focus object may cease to be the focus object. The switching icon can be dynamically updated based on the change / removal of the focus object.

[0087] In some embodiments, operation 612 and / or operation 608 includes determining a primary device. In some embodiments, the primary device can select a particular feed to be seen by a particular device. In some embodiments, the primary device is predetermined and / or designated by application settings. In some embodiments, the primary device is chosen based on input from all network devices. For example, each available feed can vote for a primary device. The device with the most votes is designated as primary. In some embodiments, the primary device can be based on predetermined input. For example, the device observing the highest temperature from a thermal sensor (e.g., thermometer, infrared camera, etc.) can be designated as the primary device. The device designated as the primary device can change dynamically. For example, if the primary device is based on temperature, a second device can be designated as the primary device if the second device's temperature reading exceeds the first device's temperature reading.

[0088] In operation 614, the feed manager 412 closes / terminates the ad hoc network. In some embodiments, the network is closed based on the network having been open for a while. In some embodiments, the network is closed based on the amount of feed being shared. For example, a network can be closed if a device is not seeing another device's feed. In some embodiments, a network can be closed in response to a device leaving the proximity of another device.

[0089] The present invention may be a system, method, or computer program product, or combination thereof, at any possible level of technical detail of integration. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions for causing a processor to carry out aspects of the present invention.

[0090] A computer-readable storage medium can be a tangible device capable of retaining and storing instructions for use by an instruction-execution device. A computer-readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge-in-groove structures having instructions recorded thereon, and any suitable combination of the foregoing. Computer-readable storage media as used herein should not be construed as being signals that are transitory in nature, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through fiber optic cable), or electrical signals transmitted through wires.

[0091] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device or to an external computer or storage device over a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may include copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage on a computer-readable storage medium within the respective computing / processing device.

[0092] Computer-readable program instructions for carrying out the operations of the present invention may be source or object code written in any combination of one or more programming languages, including assembler instructions, instruction set architecture (ISA) instructions, machine language instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data for integrated circuits, or object-oriented programming languages ​​such as Smalltalk®, C++, or the like, and procedural programming languages ​​such as the "C" programming language or similar programming languages. The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be to an external computer (e.g., through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) may execute computer readable program instructions by utilizing state information of the computer readable program instructions to individualize the electronic circuitry to implement aspects of the present invention.

[0093] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.

[0094] These computer-readable program instructions may be provided to a processor of a general-purpose computer, special-purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute on the processor of the computer or other programmable data processing apparatus, create means for performing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer-readable program instructions may also be stored on a computer-readable storage medium such that the computer-readable storage medium comprises an article of manufacture containing instructions for performing aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams, and may direct a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner.

[0095] The computer-readable program instructions may also be loaded into a computer, other programmable data processing apparatus, or other device to perform a series of operational steps on the computer, other programmable apparatus, or other device to produce a computer-executed process, the instructions executing on the computer, other programmable apparatus, or other device to perform the functions / operations specified in one or more blocks of the flowcharts and / or block diagrams.

[0096] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of instructions, including one or more executable instructions for implementing specified logical functions. In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending on the functionality involved. It will also be noted that each block of the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, can be implemented by a dedicated hardware-based system that performs the specified function or operation or executes a combination of dedicated hardware and computer instructions.

[0097] The description of various embodiments of the present disclosure has been presented for purposes of illustration and is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terminology used herein has been chosen to best explain the principles of the embodiments, practical applications, or technical improvements over technology found in the market, or to enable those skilled in the art to understand the embodiments disclosed herein.

Claims

1. 1. A computer-implemented method, the computer-implemented method comprising: Identifying a plurality of devices including a first device, each device of the plurality of devices being within communicative proximity of the first device; forming an ad hoc network including each device of the plurality of devices; determining a plurality of available data feeds, each data feed associated with one device of the plurality of devices; constructing a switch icon, the switch icon including a view of each available data feed, the switch icon configured to allow access to any feed of the plurality of feeds and to display a selected feed from the switch icon; transmitting the switching icon to each device in the ad-hoc network; Including, The method comprises: identifying a subject of the data feed based on the plurality of the data feeds; updating the toggle icon to indicate the relative location of the subject of the data feed; and The computer-implemented method further comprising:

2. selecting, on the first device of the plurality of devices, a second data feed associated with a second device of the plurality of devices from the switch icon; displaying the second data feed on the first device; and The method of claim 1 further comprising:

3. displaying the switching icon on each device of the plurality of devices; displaying the third data feed on the second device in response to selecting the third data feed on the second device; and The method of claim 2 further comprising:

4. The method of claim 1 , wherein the ad-hoc network is a mesh network.

5. The method of claim 1 , wherein each device in the plurality of devices includes a video data feed generated from a camera and a microphone.

6. The method of claim 5 , wherein each device of the plurality of devices includes an additional data feed from a sensor of the device.

7. identifying new devices in the communication proximity of the first device; adding the new device to the ad-hoc network; updating said toggle icon based on new data feeds; The method of claim 1 further comprising:

8. The method of claim 1 , wherein the switching icon is configured to display the relative location of each device in the ad-hoc network.

9. designating the first device as a primary device, the primary device being configured to select from the switching icon a data feed to be displayed on each device; updating the switching icon to indicate the relative location of the primary device; The method of claim 8 further comprising:

10. 1. A system comprising: a processor; a computer-readable storage medium communicatively coupled to the processor and which, when executed by the processor, identifying a plurality of devices including a first device, each device of the plurality of devices being within communicative proximity of the first device; forming an ad hoc network including each device of the plurality of devices; determining a plurality of available data feeds, each data feed being associated with one device of the plurality of devices; constructing a switch icon, the switch icon including a view of each available data feed, the switch icon configured to allow access to any feed of the plurality of feeds and to display a selected feed from the switch icon; and transmitting the switching icon to each device in the ad-hoc network; and causing the processor to: identifying a subject of the data feed based on the plurality of the data feeds; and updating the toggle icon to indicate the relative location of the subject of the data feed; the computer-readable storage medium storing program instructions configured to further cause the processor to A system comprising:

11. The program instructions further include: selecting, on the first device of the plurality of devices, a second data feed associated with a second device of the plurality of devices from the switch icon; displaying the second data feed on the first device; and The system of claim 10 , configured to cause the processor to:

12. The program instructions further include: displaying the switching icon on each device of the plurality of devices; displaying the third data feed on the second device in response to selecting the third data feed on the second device; and The system of claim 11 , configured to cause the processor to:

13. The system of claim 10 , wherein the ad-hoc network is a mesh network.

14. The system of claim 10 , wherein each device of the plurality of devices includes a video data feed generated from a camera and a microphone.

15. A computer program product that causes a computer to carry out the method according to any one of claims 1 to 9.

Citation Information

Patent Citations

  • Video distribution method, video reception method, server, terminal device and video distribution system

    JP2016010145A

  • In-vehicle device, distribution system, and method for receiving picture

    JP2021056191A