Video decoder which processes multiple video streams

In some embodiments, a spatially multiplexed output decoder may spatially multiplex video packets received in a time multiplexed video stream. A video stream with video packets from two or more sources may be received along with metadata. In some embodiments, a decoder may organize the video packets into respective buffers (e.g., each buffer including video packets for a respective video image). The spatially multiplexed output decoder may spatially multiplex the video images (which are made up of data from the respective video packets) into a video frame to be outputted (e.g., to a separate buffer). The video images in the video frame may then be demultiplexed in other parts of the system (e.g., in a virtual decoder) using information provided about the video frame (e.g., in metadata formed with the video frame).

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to conferencing and, more specifically, to video conferencing.

2. Description of the Related Art

Video conferencing may be used to allow two or more participants at remote locations to communicate using both video and audio. Each participant location may include a video conferencing endpoint for video/audio communication with other participants. Each video conferencing endpoint may include a camera and microphone to collect video and audio from a first or local participant to send to another (remote) participant. Each video conferencing endpoint may also include a display and speaker to reproduce video and audio received from a remote participant. Each video conferencing endpoint may also be coupled to a computer system to allow additional functionality into the video conference. For example, additional functionality may include data conferencing (including displaying and/or modifying a document for two or more participants during the conference).

Video conferencing involves transmitting video streams between video conferencing endpoints. The video streams transmitted between the video conferencing endpoints may include video frames. The video frames may include pixel macroblocks that may be used to construct video images for display in the video conferences. Video frame types may include intra-frames, forward predicted frames, and bi-directional predicted frames. These frame types may involve different types of encoding and decoding to construct video images for display. Currently, in a multi-way video conference call, a multipoint control unit (MCU) is required to composite video images received from different video conferencing endpoints onto video frames of a video stream that may be encoded and transmitted to the various video conferencing endpoints for display.

SUMMARY OF THE INVENTION

In various embodiments, a video conferencing device (e.g., an endpoint) may generate a video frame that includes video images of two or more video conferencing endpoints. The video frame may then be sent to a video conferencing device that may receive the video frame and separate the two or more video images into separate video images. By transmitting and receiving video frames with multiple video images (from different video conferencing endpoints), multiple video conferencing endpoints may implement a multi-way video conference call without using an MCU. In some embodiments, coordinate information sent along with the video frame (e.g., in metadata) may be used by the video conferencing endpoints to determine the locations of the video images in the video frame to facilitate separation of the video images. The metadata may include video image identifiers and location information (e.g., coordinates in the video frame) of the video images.

In some embodiments, the separated video images may be provided to a compositor that may composite the separated video images into a new video image layout. Other video images (e.g., from local video or received from other video conferencing endpoints) may also be composited into the new video image layout. In some embodiments, the new video image layout may be configured to be displayed (e.g., as a continuous presence image). In some embodiments, participants at each video conferencing endpoint may use their local video conferencing endpoints to customize their continuous presence layout. For example, participants may rearrange the video images and/or replace one or more video images in the video image layout (e.g., with a current video image from their local video source).

In some embodiments, a spatially multiplexed output decoder may spatially multiplex video packets received in a time multiplexed video stream. A video stream with video packets from two or more sources may be received along with metadata (e.g., with identifying information for the video packets). In some embodiments, a decoder may organize the video packets into respective buffers (e.g., each buffer including video packets for a respective video image). In some embodiments, the spatially multiplexed output decoder may spatially multiplex the video images (which are made up of data from the respective video packets) into a video frame to be outputted (e.g., to a separate buffer). The video images in the video frame may then be demultiplexed in other parts of the system (e.g., in a virtual decoder) using information provided about the video frame (e.g., in metadata formed with the video frame). These stacked images may be disassembled as needed to assemble different composite layouts for display and/or to transmit to a different endpoint for facilitating a multi-way conference.

DETAILED DESCRIPTION OF THE EMBODIMENTS

Incorporation by Reference

U.S. patent application titled “Speakerphone”, Ser. No. 11/251,084, which was filed Oct. 14, 2005, whose inventor is William V. Oxford is hereby incorporated by reference in its entirety as though fully and completely set forth herein.

U.S. patent application titled “Videoconferencing System Transcoder”, Ser. No. 11/252,238, which was filed Oct. 17, 2005, whose inventors are Michael L. Kenoyer and Michael V. Jenkins, is hereby incorporated by reference in its entirety as though fully and completely set forth herein.

U.S. patent application titled “Speakerphone Supporting Video and Audio Features”, Ser. No. 11/251,086, which was filed Oct. 14, 2005, whose inventors are Michael L. Kenoyer, Craig B. Malloy and Wayne E. Mock is hereby incorporated by reference in its entirety as though fully and completely set forth herein.

U.S. patent application titled “Virtual Decoders”, Ser. No. 12/142,263, which was filed Jun. 19, 2008, whose inventors are Keith C. King and Wayne E. Mock, is hereby incorporated by reference in its entirety as though fully and completely set forth herein.

U.S. patent application titled “Video Conferencing System which Allows Endpoints to Perform Continuous Presence Layout Selection”, Ser. No. 12/142,302, which was filed Jun. 19, 2008, whose inventors are Keith C. King and Wayne E. Mock, is hereby incorporated by reference in its entirety as though fully and completely set forth herein.

U.S. patent application titled “Video Conferencing Device which Performs Multi-way Conferencing”, Ser. No. 12/142,340, which was filed Jun. 19, 2008, whose inventors are Keith C. King and Wayne E. Mock, is hereby incorporated by reference in its entirety as though fully and completely set forth herein.

U.S. patent application titled “Integrated Videoconferencing System”, Ser. No. 11/405,686, which was filed Apr. 17, 2006, whose inventors are Michael L. Kenoyer, Patrick D. Vanderwilt, Craig B. Malloy, William V. Oxford, Wayne E. Mock, Jonathan I. Kaplan, and Jesse A. Fourt is hereby incorporated by reference in its entirety as though fully and completely set forth herein.

FIG. 1illustrates an embodiment of a video conferencing endpoint network100.FIG. 1illustrates an exemplary embodiment of a video conferencing endpoint network100which may include a network101and multiple endpoints103a-103d(e.g., video conferencing endpoints). Although not shown inFIG. 1, the video conferencing system network100may also include other devices, such as gateways, a service provider, conference units, and plain old telephone system (POTS) telephones, among others. Endpoints103a-103dmay be coupled to network101via gateways (not shown). Gateways may each include firewall, network address translation (NAT), packet filter, and/or proxy mechanisms, among others. In the embodiments discussed below, the endpoints (e.g., endpoints103a-103d) may implement a multi-way video conference call without using a multipoint control unit (MCU). The endpoints103may instead implement a “virtual MCU” as discussed herein.

The endpoints103a-103dmay include video conferencing system endpoints (also referred to as “participant locations”). Each endpoint103a-103dmay include a camera, display device, microphone, speakers, and a codec or other type of video conferencing hardware. In some embodiments, endpoints103a-103dmay include video and voice communications capabilities (e.g., video conferencing capabilities) and include or be coupled to various audio devices (e.g., microphones, audio input devices, speakers, audio output devices, telephones, speaker telephones, etc.) and include or be coupled to various video devices (e.g., monitors, projectors, displays, televisions, video output devices, video input devices, cameras, etc.). In some embodiments, endpoints103a-103dmay include various ports for coupling to one or more devices (e.g., audio devices, video devices, etc.) and/or to one or more networks. Endpoints103a-103dmay each include and/or implement one or more real time protocols, e.g., session initiation protocol (SIP), H.261, H.263, H.264, H.323, among others. In an embodiment, endpoints103a-103dmay implement H.264 encoding for high definition (HD) video streams.

The network101may include a wide area network (WAN) such as the Internet. The network101may include a plurality of networks coupled together, e.g., one or more local area networks (LANs) coupled to the Internet. The network101may also include public switched telephone network (PSTN). The network101may also include an Integrated Services Digital Network (ISDN) that may include or implement H.320 capabilities. In various embodiments, video and audio conferencing may be implemented over various types of networked devices.

In some embodiments, endpoints103a-103dmay each include various wireless or wired communication devices that implement various types of communication, such as wired Ethernet, wireless Ethernet (e.g., IEEE 802.11), IEEE 802.16, paging logic, RF (radio frequency) communication logic, a modem, a digital subscriber line (DSL) device, a cable (television) modem, an ISDN device, an ATM (asynchronous transfer mode) device, a satellite transceiver device, a parallel or serial port bus interface, and/or other type of communication device or method.

In various embodiments, the methods and/or systems described may be used to implement connectivity between or among two or more participant locations or endpoints, each having voice and/or video devices (e.g., endpoints103a-103d) that communicate through network101.

In some embodiments, the video conferencing system network100(e.g., endpoints103a-d) may be designed to operate with network infrastructures that support T1 capabilities or less, e.g., 1.5 mega-bits per second or less in one embodiment, and 2 mega-bits per second in other embodiments. In some embodiments, other capabilities may be supported (e.g., 6 mega-bits per second, over 10 mega-bits per second, etc). The video conferencing endpoint may support HD capabilities. The term “high resolution” includes displays with resolution of 1280×720 pixels and higher. In one embodiment, high-definition resolution may include 1280×720 progressive scans at60frames per second, or 1920×1080 interlaced or 1920×1080 progressive. Thus, an embodiment of the present invention may include a video conferencing endpoint with HD “e.g. similar to HDTV” display capabilities using network infrastructures with bandwidths T1 capability or less. The term “high-definition” is intended to have the full breath of its ordinary meaning and includes “high resolution”.

FIG. 2illustrates an exemplary embodiment of a video conferencing endpoint103(e.g., endpoint103a), also referred to as a participant location. The endpoint103may have a system codec box209to manage both a speakerphone205/207and the video conferencing devices. The speakerphones205/207and other video conferencing endpoint components may be coupled to the codec box209and may receive audio and/or video data from the system codec box209.

In some embodiments, the endpoint103may include a camera204(e.g., an HD camera) for acquiring video images of the participant location (e.g., of participant214). Other cameras are also contemplated. The endpoint103may also include a display201(e.g., an HDTV display). Video images acquired by the camera204may be displayed locally on the display201and may also be encoded and transmitted to other video conferencing endpoints103in the video conference.

The endpoint103may also include a sound system261. The sound system261may include multiple speakers including left speakers271, center speaker273, and right speakers275. Other numbers of speakers and other speaker configurations may also be used. The endpoint103may also use one or more speakerphones205/207which may be daisy chained together.

In some embodiments, the video conferencing endpoint components (e.g., the camera204, display201, sound system261, and speakerphones205/207) may be coupled to the system codec (“compressor/decompressor”) box209. The system codec box209may be placed on a desk or on a floor. Other placements are also contemplated. The system codec box209may receive audio and/or video data from a network (e.g., network101). The system codec box209may send the audio to the speakerphone205/207and/or sound system261and the video to the display201. The received video may be HD video that is displayed on the HD display. The system codec box209may also receive video data from the camera204and audio data from the speakerphones205/207and transmit the video and/or audio data over the network101to another conferencing system. The conferencing system may be controlled by a participant214through the user input components (e.g., buttons) on the speakerphones205/207and/or remote control250. Other system interfaces may also be used.

In various embodiments, the system codec box209may implement a real time transmission protocol. In some embodiments, a system codec box209may include any system and/or method for encoding and/or decoding (e.g., compressing and decompressing) data (e.g., audio and/or video data). In some embodiments, the system codec box209may not include one or more of the compressing/decompressing functions. In some embodiments, communication applications may use system codec box209to convert an analog signal to a digital signal for transmitting over various digital networks (e.g., network101, PSTN120, the Internet, etc.) and to convert a received digital signal to an analog signal. In various embodiments, codecs may be implemented in software, hardware, or a combination of both. Some codecs for computer video and/or audio may include MPEG, Indeo™, and Cinepak™, among others.

In some embodiments, the endpoint103may display different video images of various participants, presentations, etc. during the video conference. Video to be displayed may be transmitted as video streams (e.g., video stream300as seen inFIG. 3) between the endpoints103(e.g., endpoints103).

FIGS. 3-6describe operation of a virtual decoder, which may be used in each of a plurality of endpoints to implement a “virtual MCU” as described herein.

FIG. 3illustrates an example of a video stream300with video packets303that are used by the decoder315to compose video frames307ato be provided to virtual decoder317. In some embodiments, the video stream300may be received at video input399. In some embodiments, the endpoints103may composite different video images311(e.g., video images311a,b) into a video frame307afor the video stream300. For example, one or more of the video frames307amay include a continuous presence layout (or other video image layout) of video images311from various endpoints103involved in the video conference. The video image layout may include two or more different video images311(e.g., each from a different endpoint103) in different sections of a displayed video frame307a. In some embodiments, the video image layout may include video images (e.g., of participants, presentations, etc.) from remote endpoints103as well as from a local endpoint103. The video image layout may be displayed by the receiving endpoint103on display201.

While two video images311are shown with respect to video frame307a, it is to be understood that video frames307(“video frames307” used herein to refer to various video frames307a,307b, etc.) may include a video image layout with other combinations and layouts of two or more video images (e.g., video frame307binFIG. 4has four video images455a-d). Additional examples are shown inFIG. 4b(e.g., video frame307may include various video image layouts). Video image layout405bmay include four video images455stacked on top of each other. In some embodiments, each video image of the stacked video images may be 1280 by 720 pixels (e.g., for a total size of 1280 by 2880) (other dimensions and number of video images are also contemplated). In some embodiments, video image layout405cmay include four images side by side. As another example, the video image layout405dmay include two video images (e.g., each 640 by 360 pixels) arranged side by side in a 1280 by 360 pixel video frame. The video frame307may then be separated into two 640 by 360 pixel video images. Other combinations and layouts are also contemplated. In some embodiments, the number of video images455composited in the video image layout405may depend on the number of participating endpoints in the video conference. For example, each participating endpoint may have a corresponding video image (which may be, for example, 1280 by 720) in the video image layout405of video frame307.

As seen inFIG. 3, the video streams300may be decoded (e.g., in video stream decoder315) prior to being sent to the virtual decoder317. In some embodiments, the composited video images311of the video frames307may then be separated into separate video images311a,bby the virtual decoder317. For example, a 1280 by 360 video frame307may be separated into two 640 by 360 video images311a,b. Other dimensions are also contemplated. The video images311may then be scaled and composited into a video image layout that may be different from the video image layout of the received video frame307. In some embodiments, the virtual decoder317may be implemented as a software abstraction on hardware such as a field programmable gate-array (FPGA). In some embodiments, one or more virtual decoders317may be implemented on a single ASIC (Application Specific Integrated Chip). Other virtual decoder configurations are also contemplated.

In some embodiments, the virtual decoder317may use coordinate information319for the video images311in the video frame307to find the boundaries of the video images311in order to separate the video images311. In some embodiments, coordinate information319may be passed with the video frame307to provide the coordinates in the video frame307of the start (and/or stop) locations of video images311in the composited video image of video frame307. For example, the coordinate information319may include boundary information (e.g., see coordinate information319inFIG. 13) for the video images311in the composited video image of video frame307. Other coordinate information319is also contemplated. The coordinate information319may be used by the virtual decoder317to crop the respective video images311(e.g., video images311aand311b) in the video frame307. In some embodiments, the coordinate information319may be passed as metadata1321(e.g., seeFIG. 13) with the video frame307(e.g., in a video frame header). In some embodiments, coordinate information319may be prepared by an endpoint103preparing the video frames307for the video stream300.

In some embodiments, one or more endpoints103may arrange the incoming video images into a composite video image with a requested video image layout and define the respective coordinate information for one or more of the video images in the composite video image including the size of the original composite video image. In some embodiments, one or more endpoints103may need to subsequently scale the composite video image (e.g., scale down the composite video image to be sent over a reduced bandwidth network connection) to be sent to one or more other endpoints103. In some embodiments, the composite video image may be scaled to a scaled composite video image in a scaler. The coordinate information319may be included in metadata1321passed with a video frame307including the scaled composite video image. In some embodiments, the coordinate information319may be reformatted (e.g., at the sending endpoint or at the receiving endpoint) to reflect the new coordinates of one or more of the resized video images in the scaled composite video image. For example, when the endpoint103receives the scaled composite video image, the endpoint103may detect the actual size of the scaled composite video image and may determine the new coordinates of one or more of the video images in the scaled composite video image using, for example, a ratio of the size of the original composite video image to the size of the scaled composite video image detected by the endpoint103. These new coordinates may then be used to separate one or more of the resized images in the scaled composite video image to use in compositing a new composite video image. For example, see U.S. Provisional Patent Application titled “Virtual Multiway Scaler Compensation”, Ser. No. 60/949,674, which was filed Jul. 13, 2007, whose inventors are Keith C. King and Wayne E. Mock, which was incorporated by reference above.

FIG. 4aillustrates an overall view of the scaling and re-compositing process including virtual decoder317, according to an embodiment. In some embodiments, virtual decoder317may separate video images455a-din video image layout405(which may be included in a single video frame307) into separate video images459to provide to one or more scalers513. The one or more scalers513may scale one or more of the video images459and then may send them to one or more compositors515. In some embodiments, one or more of the video images459(and/or other video images) may be sent to the compositors515without sending them to the scalers513. The one or more compositors515may then assemble the video images459into a new video image layout559(e.g., selected by a local participant214through the local endpoint103). In some embodiments, video data from a real time local video source555(e.g., from the local video camera) may be composited into the layout. The real time source video image may replace a corresponding video image in the new layout559. Other alternative video sources are also contemplated.

FIG. 5illustrates a flowchart of a method for virtual decoding, according to an embodiment. It should be noted that in various embodiments of the methods described below, one or more of the elements described may be performed concurrently, in a different order than shown, or may be omitted entirely. Other additional elements may also be performed as desired.

At501, a video frame307including two or more video images311may be received. For example, the video frame307may be received as a series of video packets303in a video stream300at decoder315. The decoder315may assemble the video packets303into their respective video frames307for further processing in the virtual decoder317.

At503, coordinate information319indicating the location of one or more of the video images311in the video frame307may be received. For example, the coordinate information319may be received in metadata1321(seeFIG. 3) sent along with the video frame307. In some embodiments, the video frame307may include a continuous presence layout of video images311(e.g., video image layout1100as seen inFIG. 11a).

At505, the coordinate information319may be used to find video image boundaries of the video images311within the video frame307. In some embodiments, the coordinate information319may be used to determine where the video images311start and stop in the video frame307. These start/stop locations may be used by the virtual decoder317to separate the video images311from the video frame307. For example, as seen inFIG. 11a, coordinate information319for coordinates1109,1111, and1113may be sent with the video frame307.FIG. 13illustrates an example of a use of coordinate information319to locate the boundaries of video images (e.g., video images455a-d) in order to separate the video images. For example, the User1video image455amay have a left boundary at0, a top boundary at0, a right boundary at639, and a bottom boundary at359. Similarly, the user2video image455bmay have a left boundary at640, a top boundary at0, a right boundary at1279, and a bottom boundary at359. Coordinate information319(e.g., boundary information) for other video images (e.g., video images455cand455d) may also be provided in coordinate information319.

At507, the video images may be separated. In some embodiments, separate video images may be defined using the video images in the video frame307according to the coordinate information319. For example, separate video images1101,1103, and1105(as seen inFIG. 1b) may be defined and/or scaled into separate video images1101,1103, and1105. In some embodiments, separating the video images may include, for example, storing the separated video images1101,1103, and1105in separate locations of a memory. In some embodiments, separating the video images1101,1103, and1105may include storing start and/or stop locations of the video images1101,1103, and1105in memory. Other means for separating the video images are also contemplated. For example, separating may include copying, replacing, and/or modifying data from the video images to be used to create a new composite image.

FIG. 6illustrates a flowchart of a method for generating a new video image layout, according to an embodiment. It should be noted that in various embodiments of the methods described below, one or more of the elements described may be performed concurrently, in a different order than shown, or may be omitted entirely. Other additional elements may also be performed as desired.

At601, a video frame307including two or more video images311may be received. The video frame307may include two or more video images311. For example, video frame307may include image layout1100(seeFIG. 11a) that includes video images1101,1103, and1105originating from different video conferencing endpoints103. A main image1101may be an image of the video conferencing endpoint with the current speaker and two or more side images (e.g., side images1103and1105) of other video conferencing endpoints participating in the video conference. In some embodiments, the video frame307may be received from another video conferencing endpoint (which, for example, received one or more of the video images in the image layout1100from other video conferencing endpoints). The video frame307may be received with coordinate information319(e.g., embedded in metadata1321received with the video frame307). The coordinate information319may indicate the start/stop locations of one or more of the video images in the video frame307. In some embodiments, the video frames307and coordinate information319may be transported together in video stream300.

At603, the video frame307may be separated into two or more video images (e.g., video images1101,1103and1105). The two or more separated video images may correspond to separate video conferencing endpoints103. As seen inFIG. 11, one separated video image1101may correspond to the main image1101and two separate video images1103and1105may correspond to each of the two side images (e.g., images1103and1105). In some embodiments, the coordinate information319may be used to determine where the video images start and stop in the video frame307. These start/stop locations may be used by the virtual decoder317to separate the video images from the video frame307. For example, coordinate information319for coordinates1109,1111, and1113may be sent with the video frame307.FIG. 13illustrates an example of a use of coordinate information319to locate the boundaries of video images in order to separate the video images. For example, the User1video image455amay have a left boundary at0, a top boundary at0, a right boundary at639, and a bottom boundary at359. Similarly, the user2video image455bmay have a left boundary at640, a top boundary at0, a right boundary at1279, and a bottom boundary at359. Coordinate information319(e.g., boundary information) for other video images (e.g., video images455cand455d) may also be provided in coordinate information319. In some embodiments, coordinate information319for a respective video image may be placed in a row of information for the respective video image. For example, row one of data in metadata1321may include a call identifier, system name, number, Internet Protocol (IP) address, and left, top, right, bottom coordinates (e.g., 0, 0, 639, and 359) for a respective video image (other information may also be included).

In some embodiments, the coordinate information319may be sent in metadata1321sent in video stream300between video conference endpoints103. The metadata1321may include coordinate information319for a video frame with the start (and/or stop) information for a video image (e.g., image boundaries and/or pixel start/stop points) corresponding to a video conferencing endpoint103, identifying information respective to the corresponding video conferencing endpoint103, and other information.

At605, one or more of the separated video images (e.g., separated video image1101,1103, or1105) may be provided to one or more scalers (e.g., scalers513). In some embodiments, one or more of the video images may be scaled according to a video image layout the video images are to be placed in. For example, if the main image1101and each of the two side images1103and1105are to be placed in a video image layout with equal sized video images, the main image1101may be scaled down and the two side video images1103and1105may be scaled up. Other scaling combinations are also contemplated. In some embodiments, the separated video images may not be scaled (e.g., the separated video images may be only rearranged).

At607, the video images (including scaled video images, if any) may be provided to one or more compositors (e.g., compositors515). In some embodiments, the compositors may composite the video images into a video frame for sending to another video conferencing endpoint. For example, to implement a multi-way conference, one of the separated video images may be composited with, for example, a video image from a local camera and the composited video frame may be sent to a remote video conferencing endpoint. In some embodiments, the compositor may composite the video images into a video image layout specified by a local participant214for display.

At609, the video image layout may be sent to another video conferencing endpoint and/or displayed. In some embodiments, the video image layout may be different from the video image layout of the video images received at the video conferencing endpoint103.FIG. 12illustrates an example of a new video image layout with three similar sized images1201,1203, and1205on display.FIG. 14illustrates other possible video image layouts (e.g., layouts1401,1403,1405,1407,1409, and1411), according to various embodiments. Other video image layouts are also contemplated. Each video conferencing endpoint103may be operable to configure its own video image layout (e.g., according to a layout requested by a local participant214through the video conferencing endpoint103). In some embodiments, a local participant214may cycle through the layout offerings from their video conferencing endpoint103(e.g., by clicking an icon to cycle to the next available layout).

FIG. 7aillustrates an embodiment for multiway video conferencing in which the video conferencing endpoints103operate together to implement multi-way continuous presence video conferencing without requiring a physical MCU. As described above, the manner in which the endpoints operate together to implement multi-way continuous presence video conferencing without requiring a physical MCU may be referred to as a “Virtual MCU”.

As another example, as seen inFIG. 7b, video conferencing endpoints103a,103b,103c,103d,103e,103f,103g, and103hmay each be capable of receiving 3 input video streams. In the 8-way video conference shown inFIG. 7b, input video streams771,773,781, and783may each have three video images, input video streams769,775, and785may each have two video images and input video streams767,777,779, and787may each have one video image. Other configurations for the 8-way call are also contemplated. In some embodiments, video conferencing endpoints with various capabilities (e.g., maximum number of receivable input video streams) may be mixed in the same network.

In some embodiments, the patterns (e.g., patterns700aand700b) may change dynamically as video conferencing endpoints are added and/or dropped during the video conference. Rulesets may be used to compensate and/or rearrange transmissions for dropped video conferencing endpoints. In some embodiments, a video conference call may only be able to support a maximum number of callers and may return an error message or required system requirements if an attempt is made to add an additional caller past the maximum number.

FIG. 8illustrates a flowchart of a method for conducting a multi-way video conference using the video decoder, according to an embodiment. It should be noted that in various embodiments of the methods described below, one or more of the elements described may be performed concurrently, in a different order than shown, or may be omitted entirely. Other additional elements may also be performed as desired.

At801, managing instructions (e.g., seeFIG. 9) for a multi-way video conference may be received from one or more video conferencing endpoints103or the managing instructions may be self-determined. The managing instructions may specify which video conferencing endpoints103in the multi-way video conference will send which video images and/or combinations of video images to other video conferencing endpoints103.

At803, video conferencing endpoints103instructed to send at least a video frame307with their video image (e.g., a single video image sent as input stream709) may send their video frame307to designated video conferencing endpoints (e.g., to video conferencing endpoint103b).

At805, after receiving the respective video frames with the single video images, designated video conferencing endpoints may composite two or more video images on single video frames (as instructed) to send to designated video conferencing endpoints. For example, after receiving the video image in input video stream709from video conferencing endpoint103a, video conferencing endpoint103bmay composite the video image from video conferencing endpoint103awith the local video source image from video conferencing endpoint103bonto a single video frame to send to video conferencing endpoint103d(in input stream717).

At807, the composited video frames307may be transmitted to designated video conferencing endpoints103(e.g., according to specific instructions received by corresponding video conferencing endpoints). In some embodiments, the video stream300may be sent and received through a single Internet Protocol (IP) port on each video conferencing endpoint103.

At809, the composited video frames307with at least two video images each may be received by designated video conferencing endpoints103. As noted at805, the at least two video images may be included in a single video frame. For two video images received on the single video frame, a single input decoder315may be used prior to sending the video frame to the virtual decoder317to separate the composited images.

At811, virtual decoder317may separate the two or more video images included in the single video frame307.

At813, one or more of the video images (e.g., separated video images and/or other video images) may be sent to a scaler513to scale according to a video image layout (e.g., a video image layout requested by a local video conferencing participant214or needed for a video frame307to transmit to another video conferencing endpoint103).

At815, video images (e.g., separated video images and/or other video images) may be composited. For example, the video images may be composited into the requested video image layout that may include two or more of the local video images and the three received video images. In some embodiments, the video images may be composited into video frames to send to other video conferencing endpoints103.

At817, the video image layout may be displayed. In some embodiments, recomposited video frames may be sent to other video conferencing endpoints (e.g., to facilitate the multi-way video conference call).

FIG. 9illustrates a flowchart for managing a multi-way video conference, according to an embodiment. It should be noted that in various embodiments of the methods described below, one or more of the elements described may be performed concurrently, in a different order than shown, or may be omitted entirely. Other additional elements may also be performed as desired.

At901, a pattern (e.g., see pattern700ainFIGS. 7aand700binFIG. 7b) may be used to determine which video conferencing endpoints103in the multi-way video conference call will transmit combinations (e.g., see combination799inFIG. 7a) of video images to other video conferencing endpoints103in the multi-way video conference call.

At903, the pattern may be used to determine which video images to include in the various combinations transmitted between the video conferencing endpoints103. Various combinations may include at least two video images, each from different video conferencing endpoints103(e.g., as seen inFIGS. 7a-b). The pattern may also include single video images sent by a video conferencing endpoint to other video conferencing endpoints.

At905, instructions may be transmitted to one or more of the video conferencing endpoints103participating in the video conference call. For example, video conferencing endpoint0(103a) may perform901and903above and may then transmit the instructions to the other video conferencing endpoints103involved in the multi-way video conference call.

FIG. 10illustrates a flowchart for implementing a multi-way video conference for four video conferencing endpoints, according to an embodiment. It should be noted that in various embodiments of the methods described below, one or more of the elements described may be performed concurrently, in a different order than shown, or may be omitted entirely. Other additional elements may also be performed as desired.

At1001, the first video conferencing endpoint103amay transmit a first video frame in video stream709(including video images from the first video conferencing endpoint103a) and a second video frame in video stream711(including video images from the third video conferencing endpoint103cand the fourth video conferencing endpoint103d) to the second video conferencing endpoint103b.

At1003, the first video conferencing endpoint103amay also transmit the second video frame to the fourth video conferencing endpoint103d.

At1005, the second video conferencing endpoint103bmay transmit, to the fourth video conferencing endpoint103d, a third video frame in video stream717(including video images from the first video conferencing endpoint103aand the second video conferencing endpoint103b).

At1007, the third video conferencing endpoint103cmay transmit, to the first video conferencing endpoint103a, a fourth video frame in video frame713(including video images from the third video conferencing endpoints103cand the fourth video conferencing endpoint103d).

At1009, the fourth video conferencing endpoint103dmay transmit, to the third video conferencing endpoint103c, a fifth video frame in video stream715(including video images from the first video conferencing endpoint103aand the second video conferencing endpoint103b) and a sixth video frame in video stream719(including video images from the fourth video conferencing endpoint103d).

At1011, the fourth video conferencing endpoint103dmay also transmit the fifth video frame in video stream715to the first video conferencing endpoint103a.

In this embodiment, four video conferencing endpoints103may participate in a four-way video conference using two or fewer transmissions from each video conference system and two or fewer received transmissions per video conferencing endpoint103. In some embodiments, the video conferencing endpoints103may separate video images out of the received video frames to scale and composite with other images (e.g., from the local camera or from other video sources) to form new video image layouts (e.g., as requested by a local participant at the separate video conferencing endpoints and/or to transmit to other video conferencing endpoints).

In some embodiments, virtual decoders317may be implemented in an integrated system in an application programming interface (API). New abstract video sources may be enumerated as source channels. The sources may be configured with a new API that maps the virtual decoder sources to a subsection of the video frames of an incoming real source decoder stream. In some embodiments, the mapping may be changed dynamically but may be configured before a video stream300is opened with a virtual decoder source. Scalers may be reserved for the video streams. Only (n−1) virtual decoders317may be needed because one of the virtual streams being sent back may be that of the original video conferencing endpoint.

As seen in the table, four video conferencing endpoints103may participate in a four-way call between each other. The video conferencing endpoint103may signal the participants214and/or each other to determine which video conferencing endpoint103will send which inputs. In some embodiments, no single video conferencing endpoint may need to act as an MCU, but instead the MCU duties may be divided among the four video conferencing endpoints103. As video conferencing endpoints103join and/or leave the video conference, the remaining video conferencing endpoints103may signal each other changes in assignments in which video conferencing endpoints103will send which video streams, etc. In some embodiments, one video conferencing endpoint103may be selected to determine which video conferencing endpoints103should send which inputs. In some embodiments, multiple video conferencing endpoints103may participate in the decision. In some embodiments, one or more of the video conferencing endpoints103may broadcast their capabilities (e.g., number of real inputs) to the other video conferencing endpoints103to assist in the determination. In some embodiment, composited streams sent by the video conferencing endpoints103may be arranged into three 1280 by 240 video images. These may consume the resolution in a 720p frame with the aspect ratio being corrected at the receiving end. This may be easier for the hardware scalers to handle (the hardware handlers may prefer vertical offsets in the video images). Other video image sizes are also contemplated.

FIG. 15illustrates a spatially multiplexed output decoder, according to an embodiment. A video stream300may include one or more video packets303from two or more sources (e.g., video packet303afrom source0and video packet303bfrom source1). In some embodiments, metadata1321received with the video stream300may be used by the decoder1501to organize the video packets into respective buffers (e.g., buffer1505afor source0and buffer1505bfor source1). In some embodiments, the video stream(s) may be received over two or more ports (each, for example, corresponding to a specific source) and the decoder1501may use the respective port as an indicator for the video packets (e.g., instead of the metadata1321). In some embodiments, the video stream(s) may be received over one port. A video frame307including a source0image spatially multiplexed with a source1image may be outputted (e.g., to a separate buffer). The video images may then be demultiplexed in other parts of the system (e.g., in virtual decoder317) using information provided about the video frame307. In this way, the virtual decoder317may demultiplex multiple video sources from a single transmitted video stream300. In some embodiments, the video sources may be time multiplexed as they enter the decoder1501and may leave the decoder1501in a spatially multiplexed format. For example, video frame307leaving the decoder1501may have a video layout405bwith stacked 1280 by 720 pixel images. These stacked images may be disassembled as needed to assemble different composite layouts for display and/or to transmit to a different endpoint for facilitating a multi-way conference.

FIG. 16illustrates a flowchart for implementing a spatially multiplexed output decoder, according to an embodiment. It should be noted that in various embodiments of the methods described below, one or more of the elements described may be performed concurrently, in a different order than shown, or may be omitted entirely. Other additional elements may also be performed as desired.

At1601, a video stream including video packets from two or more sources may be received. In some embodiments, the video packets of the video stream may be time multiplexed.

At1603, metadata may be received with the video stream. In some embodiments, metadata1321received with the video stream300may be used by the decoder1501to organize the video packets into respective buffers (e.g., buffer1505afor source0and buffer1505bfor source1). For example, the metadata1321may include identification information for the video packets.

At1605, the video packets may be sorted into respective buffers. For example, a different buffer may be used to collect the video packets for a video image for each video packet source.

At1607, a video frame may be formed by spatially multiplexing the video images of the different sources (e.g., see video frame307inFIG. 15). In some embodiments, metadata may be generated for the composite video frame that includes coordinate information for the video images in the composite video frame.

Embodiments of a subset or all (and portions or all) of the above may be implemented by program instructions stored in a memory medium or carrier medium and executed by a processor. A memory medium may include any of various types of memory devices or storage devices. The term “memory medium” is intended to include an installation medium, e.g., a Compact Disc Read Only Memory (CD-ROM), floppy disks, or tape device; a computer system memory or random access memory such as Dynamic Random Access Memory (DRAM), Double Data Rate Random Access Memory (DDR RAM), Static Random Access Memory (SRAM), Extended Data Out Random Access Memory (EDO RAM), Rambus Random Access Memory (RDRAM), etc.; or a non-volatile memory such as a magnetic media, e.g., a hard drive, or optical storage. The memory medium may include other types of memory as well, or combinations thereof. In addition, the memory medium may be located in a first computer in which the programs are executed, or may be located in a second different computer that connects to the first computer over a network, such as the Internet. In the latter instance, the second computer may provide program instructions to the first computer for execution. The term “memory medium” may include two or more memory mediums that may reside in different locations, e.g., in different computers that are connected over a network.

In some embodiments, a computer system at a respective participant location may include a memory medium(s) on which one or more computer programs or software components according to one embodiment of the present invention may be stored. For example, the memory medium may store one or more programs that are executable to perform the methods described herein. The memory medium may also store operating system software, as well as other software for operation of the computer system.