A video stream may have a particular aspect ratio representing a ratio of the width to the height of the video images. A camera may capture the video stream at a particular aspect ratio. The video stream may be adjusted to a different ratio when viewed, but adjusting the size of the video stream to a different ratio than the one at which it was captured may distort the video stream.
The drawings describe example implementations. The drawings show methods performed in an example order, but the methods may also be performed in other orders. The following detailed description references the drawings, wherein:
A processor may determine a position of video stream windows on a display to accommodate video streams of different aspect ratios at the same time. The video streams may each be captured by a different camera, such as where each video stream is captured at a different computer for a video conferencing system. As a result, the video streams may have different aspect ratios. The aspect ratio may indicate a ratio between a height and width. Making video stream windows have the same width and height where the video streams have different aspect ratios may result in altering the ratio of width to height for some of the video stream windows and causing those video streams to appear distorted. In one implementation, windows of video streams of the same aspect ratio may be grouped together for display, and in some implementations the video stream windows of the same aspect ratio may be altered to be the same size. For example, in a video conference involving six incoming video streams, three having a 3:2 aspect ratio and three having a 16:9 aspect ratio, the three video streams having a 3:2 aspect ratio may be arranged in a first row and the three video streams having a 16:9 aspect ratio may be arranged in a second row. Grouping video streams of the same aspect ratio may make the video streams easier to view, such as on a personal display device.
The electronic device 100 may include a processor 101 and a machine-readable storage medium 102. The processor 101 may be any suitable processor, such as a central processing unit (CPU), a semiconductor-based microprocessor, or any other device suitable for retrieval and execution of instructions. In one implementation, the electronic device 100 includes logic instead of or in addition to the processor 101. As an alternative or in addition to fetching, decoding, and executing instructions, the processor 101 may include one or more integrated circuits (ICs) (e.g., an application specific integrated circuit (ASIC)) or other electronic circuits that comprise a plurality of electronic components for performing the functionality described below. In one implementation, the electronic device 100 includes multiple processors. For example, one processor may perform some functionality and another processor may perform other functionality.
The machine-readable storage medium 102 may be any suitable machine readable medium, such as an electronic, magnetic, optical, or other physical storage device that stores executable instructions or other data (e.g., a hard disk drive, random access memory, flash memory, etc.). The machine-readable storage medium 102 may be, for example, a computer readable non-transitory medium. The machine-readable storage medium 102 may include instructions executable by the processor 101. The machine-readable storage medium 102 may include a position determining module 103 to determine the position of video streams based on their aspect ratios and position providing module 104 to provide the determined position information (e.g., to a display device communicatively coupled to or otherwise associated with electronic device 100). The position determining module 103 and the position providing module 104 may include instructions executable by the processor 101.
The position determining module 103 may include instructions to determine an arrangement for positioning windows for received incoming video streams on a display at the same time where the video streams have different aspect ratios. Windows of video streams with the same aspect ratios may be grouped together, such as displayed next to one another without a video stream of a different aspect ratio between the video streams of the same aspect ratio. For example, windows of video streams of a first aspect ratio may be grouped together for display in a first row and windows of video streams of a second aspect ratio may he grouped together for display in a second row. In some cases, the windows with video streams of the same aspect ratio may be altered to have the same size.
The position providing module 104 may include instructions to provide the determined position information. For example, the position information may be sent to the display 105 or to another electronic device for displaying the video streams. In some implementations, the position information may be stored or transmitted via a network.
Beginning at 201, a processor, such as the processor 101 receives multiple video streams. For example, each video stream may be associated with a participant or a participant location for a video conference. The video streams may be received from multiple sources such that they may have different aspect ratios. The processor may receive the video streams in any suitable manner. For example, the video streams may originate or be received via a network or may be retrieved from a storage medium.
Moving to 202, the processor determines aspect ratios of the received video streams. The processor may determine the aspect ratios, for example, based on information received with the video streams or based on an analysis of the video streams. The aspect ratios may indicate a ratio of width to height of a video stream image (e.g., a ratio of the number of columns of pixels to the number of rows of pixels in a digital image). Different camera configurations may capture images with different aspect ratios, and an image captured with a particular aspect ratio in some cases may appear distorted when the aspect ratio is not preserved. For example, altering the aspect ratio may make the image appear to be distorted. The aspect ratios may be, for example, a width to height ratio of 4:3 or 16:9.
Continuing to 203, the processor identifies a first subset of at least two of the received video streams as having the same aspect ratio. For example, if three video streams are received with aspect ratios 4:3 and four video streams are received with aspect ratios 16:9, the processor may identify a first subset as the three video streams with aspect ratios 4:3. The processor may create multiple groups for video streams of the same aspect ratio or a single group for video streams of the same aspect ratio.
Proceeding to 204, the processor identifies a second subset of at least two other of the received video streams as having the same aspect ratio. For example, a second subset may be identified with two or more video streams with aspect ratios 16:9. The processor may identify additional subsets. For example, the processor may receive video streams with three or four different aspect ratios.
Continuing to 205, the processor causes the first subset of received video streams to be displayed together in a first group. For example, the processor may cause the received video streams to be displayed in particular manner by sending information about the position of the video streams to a display device for displaying the video streams. The processor may cause the first subset of video streams to be displayed in any suitable manner, such as in the same row or column on the display or next to one another. The video streams of the first subset may be caused to be displayed adjacent to one another such that there are not video streams of different aspect ratios between the video streams of the first subset.
In one implementation, causing a subset of video streams to be displayed together involves displaying video stream windows together within a larger window encompassing the individual video stream windows. The behavior of the individual video stream windows may be changed based on manipulations to the larger window. For example, the larger window may be moved and resized such that the individual video stream windows are moved and resized with the larger window.
Moving to 206, the processor causes the second subset of received video streams to he displayed together in a second group that is different from the first group. For example, the first subset may be displayed in a first row and the second subset may be displayed in a second row. As another example, a single row may contain the video streams from the first subset next to one another and then the video streams from the second subset next to one another. In one implementation, the processor also sizes the video streams of each subset to be the same. For example, the video streams of the first subset may each be a first size and the video streams of the second subset may each be a second size.
In some implementations, one dimension of video stream windows of different aspect ratios may be the same size and the other dimension of the video stream windows may he determined based on their aspect ratio. For example, video stream windows of 4:3 video streams and 16:9 video streams may be sized to have the same height, and the width may then be determined based on the aspect ratios. A processor may size video stream windows such that windows with different aspect ratios have either the same height or width with the other dimension determined by the aspect ratio. For example, for images 1 and 2 with aspect ratio 4:3 and images 3 and 4 with aspect ratio 16:9, each of images 12, 3, and 4 may be adjusted to have a width of 4 cm. The height of the images 1 and 2 with aspect ratio 4:3 may then be 3 cm, and the height of the images 3 and 4 with aspect ratio 16:9 may then be 2.25 cm. The video stream windows 402, 403, 404, and 405 of
The video stream windows 501, 502, and 503 are sized such that each video stream window has the same width, and the height is then determined based on the aspect ratio. For example, video stream windows 501 and 502 with aspect ratio 4:3 are taller than the video stream window 503 with aspect ratio 16:9. In some implementations, video stream windows of different aspect ratios are not the same size and a border may be placed around smaller video stream windows such that the video stream windows of different aspect ratios are the same size with the border. For example, a frame could be placed around the video stream window 503 to make it the same size as the video stream windows 501 and 502.
Beginning at 701, the processor identifies available display space. For example, the processor may identify available display space based on the size of a display screen. The processor may determine the dimensions of the identified available display space. In some cases, the amount of available display space may be determined based on other objects shown on the display screen. For example, there may be other icons displayed or other program windows open. In some implementations, the amount of available display space is calculated as a percentage of free space on the display, such as where 70 percent of the width of the display screen or 80 percent of the height of the display screen may be used for displaying video stream windows. In some cases, the processor may determine that the available display space is not contiguous.
Continuing to 702, the processor determines sizes of video stream windows to position within the identified display space where the size of a dimension of the video stream windows is the same. For example, the processor may size the video stream windows such that the width of the video stream windows is maximized within the identified display space where the height of the video stream windows is the same or where the width of the video stream windows is the same. As another example, the processor may size the video stream windows such that the height of the video stream windows is maximized within the identified display space where the height of the video stream windows is the same or the width of the video stream windows is the same. In some implementations, the processor maximizes both the height and the width of the video stream windows within the identified display space such that the area used by the video stream windows is maximized.
In some implementations, the processor may maximize the size of a portion of the video stream windows within the identified display space, such as the video stream windows in a particular row, column, or area of the identified display space. The processor may determine a number of video stream windows to place within a row, column, or area based on user input. The processor may determine the number of video stream windows to place within a row based on the total number of video streams and a minimum allowed size for the video stream windows. In some implementations, once the video stream windows are automatically sized and positioned, the user may alter the size and position of the video stream windows if desired.
In
Grouping video streams for display based on aspect ratios may create a more aesthetically pleasing display and allow a user to more easily view multiple video streams simultaneously. For example, grouping video streams by aspect ratio may be useful for a video conferencing system.