An apparatus, a method and a computer program for video coding

By dynamically cropping and transmitting 360-degree video streams based on viewport parameters, the method addresses the inefficiencies in existing technologies, reducing computational load and data transmission bandwidth while ensuring high-quality viewing experiences.

WO2025068629A1PCT designated stage expired Publication Date: 2025-04-03NOKIA TECHNOLOGIES OY
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
PCT/FI2024/050479
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-09-26
Filing Date
2024-09-13
Publication Date
2025-04-03

AI Technical Summary

Technical Problem

The existing technologies for processing 360-degree video streams require significant computational power and result in excessive data rates and bandwidth requirements, as they typically output full 360° video streams for human eyes, which is wasteful and inefficient.

Method used

An apparatus and method that dynamically adjust the processing of 360-degree video streams by obtaining image data from image sensors, receiving viewport parameters, stitching and cropping the image data into a 360-degree video stream corresponding to the viewport, and transmitting the cropped stream, thereby reducing computational load and data rate.

Benefits of technology

This approach significantly reduces the computational power required for processing 360-degree video streams and minimizes data transmission bandwidth, leading to more efficient and cost-effective video streaming while maintaining high quality for the viewed viewport.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure FI2024050479_03042025_PF_FP_ABST
    Figure FI2024050479_03042025_PF_FP_ABST
Patent Text Reader

Abstract

A method comprising obtaining image data from one or more image sensors or lenses; receiving a signalling regarding parameters of a viewport to be used in rendering the 360-degree video stream; stitching and cropping the image data from the one or more image sensors into a 360-degree video stream having the viewport according to the signalling; and transmitting the cropped 360-degree video stream corresponding to the viewport
Need to check novelty before this filing date? Find Prior Art

Description

AN APPARATUS, A METHOD AND A COMPUTER PROGRAM FOR VIDEOCODINGTECHNICAL FIELD

[0001] The present invention relates to an apparatus, a method and a computer program for video coding.BACKGROUND

[0002] Recently, the development of various multimedia streaming applications, especially 360-degree video or virtual reality (VR) applications, has advanced with big steps. In viewport- adaptive streaming (VAS) (a.k.a. viewport-dependent streaming), the bitrate is aimed to be reduced e.g. such that the primary viewport (i.e., the current viewing orientation) is transmitted at the best quality / resolution, while the remaining of 360-degree video is transmitted at a lower quality / resolution. When the viewing orientation changes, e.g. when the user turns his / her head when viewing the content with a head-mounted display (HMD), another version of the content needs to be streamed, matching the new viewing orientation.

[0003] Binocular human vision field-of-view (FOV) is approximately 200° x 135° (horizontal x vertical), wherein the accurate vision FOV is only around 60° x 55°, whereas the VR applications typically operate with e.g. 90° x 60° viewport. These limitations give the guidelines for the size of the viewport to be processed and transmitted at the best quality / resolution.

[0004] The camera device capturing the 360-degree typically utilize hardware stitching IC (i.e., a specific ASIC) to perform the image stitching from a plurality of image sensors so as to create a stitched 360-degree video stream. The stitched 360-degree video stream is then provided to a processing unit for transcoding, after which the content is transmitted from the 360 camera for viewing e.g. by a HMD or other type of VR headset or further processing to be carried out e.g. by an external processing unit, such as a server or a cloud computing unit.

[0005] However, stitching the images into the stitched 360-degree video stream and processing the stitched 360-degree video stream requires a huge amount of computational power from the processing unit. Considering the limited size of the usable viewport at a time, it can be concluded that a lot of computation power is wasted by outputting full 360° video stream in thecase of live streaming for human eyes. The excess amount of data rate also results in large bandwidth requirements for the network.SUMMARY

[0006] Now, an improved method and technical equipment implementing the method has been invented, by which the above problems are alleviated. Various aspects include methods, apparatuses and a computer readable medium comprising a computer program, or a signal stored therein, which are characterized by what is stated in the independent claims. Various details of the embodiments are disclosed in the dependent claims and in the corresponding images and description.

[0007] The scope of protection sought for various embodiments of the invention is set out by the independent claims. The embodiments and features, if any, described in this specification that do not fall under the scope of the independent claims are to be interpreted as examples useful for understanding various embodiments of the invention.

[0008] According to a first aspect, there a provided an apparatus comprising means for obtaining image data from one or more image sensors; means for receiving a signalling regarding parameters of a viewport to be used in rendering the 360-degree video stream; means for stitching and cropping the image data from the one or more image sensors into a 360-degree video stream having the viewport according to the signalling; and means for transmitting the cropped 360-degree video stream corresponding to the viewport.

[0009] According to an embodiment, said means for receiving the signalling regarding parameters of the viewport comprise a viewport control unit.

[0010] According to an embodiment, said means for cropping the 360-degree video stream into the viewport according to the signalling comprise the viewport control unit or a viewport control driver unit.

[0011] According to an embodiment, said means for stitching the image data from the one or more image sensors into a 360-degree video stream and cropping the 360-degree video stream having the viewport according to the signalling are separate means, wherein said stitching is carried out prior to the cropping.

[0012] According to an embodiment, the apparatus comprises means for adjusting, based on the signalling, the number of image sensors or lenses, from which the cropped 360-degree video stream is stitched.

[0013] According to an embodiment, the apparatus comprises means for aligning a center or origin points of the viewport and the stitched 360 video stream.

[0014] According to an embodiment, the apparatus comprises means for rotating the stitched 360-degree video stream according to the signalling.

[0015] According to an embodiment, the apparatus comprises means for encoding the cropped 360-degree video stream prior to transmission.

[0016] According to an embodiment, the apparatus comprises means for storing the stitched 360-degree video stream in a buffer memory; and means for fetching the stitched 360-degree video stream from the buffer memory for cropping.

[0017] According to an embodiment, any of above means comprise the viewport control driver unit.

[0018] According to a second aspect, there a provided an apparatus comprising at least one processor and at least one memory, said at least one memory stored with computer program code thereon, the at least one memory and the computer program code configured to, with the at least one processor, cause the apparatus at least to perform: obtain image data from one or more image sensors; receive a signalling regarding parameters of a viewport to be used in rendering the 360- degree video stream; stitch and crop the image data from the one or more image sensors into a 360-degree video stream having the viewport according to the signalling; and transmit the cropped 360-degree video stream corresponding to the viewport.

[0001] A method according to a third aspect comprises obtaining image data from one or more image sensors or lenses; receiving a signalling regarding parameters of a viewport to be used in rendering the 360-degree video stream; stitching and cropping the image data from the one or more image sensors into a 360-degree video stream having the viewport according to the signalling; and transmitting the cropped 360-degree video stream corresponding to the viewport.

[0020] The further aspects relate to apparatuses and computer readable storage media stored with code thereon, which are arranged to carry out the above methods and one or more of the embodiments related thereto.BRIEF DESCRIPTION OF THE DRAWINGS

[0021] For better understanding of the present invention, reference will now be made by way of example to the accompanying drawings in which:

[0022] Figure 1 shows schematically an example of a multi-camera system as a simplified block diagram;

[0023] Figure 2 shows a perspective view of a multi-camera system suitable for employing embodiments of the invention;

[0024] Figures 3a and 3b show schematically an encoder and a decoder suitable for implementing embodiments of the invention;

[0025] Figure 4 shows an example of MPEG Omnidirectional Media Format (OMAF) concept;

[0026] Figures 5a and 5b show two alternative methods for packing 360-degree video content into 2D packed pictures for encoding;

[0027] Figure 6 shows the process of forming a monoscopic equirectangular panorama;

[0028] Figure 7a shows a flow chart of an encoding method according to an embodiment of the invention;

[0029] Figure 7b shows a flow chart of an encoding method according to another embodiment of the invention;

[0030] Figure 8 shows an exemplifying block chart of an encoding apparatus according to an embodiment of the invention;

[0031] Figure 9 shows an exemplifying block chart of an encoding apparatus according to another embodiment of the invention;

[0032] Figure 10 shows an exemplifying block chart of an encoding apparatus according to another embodiment of the invention;

[0033] Figure 11 shows an exemplifying block chart of an encoding apparatus according to yet another embodiment of the invention;

[0034] Figure 12 shows a schematic diagram of an example multimedia communication system within which various embodiments may be implemented.DETAILED DESCRIPTON OF SOME EXAMPLE EMBODIMENTS

[0035] The following describes in further detail suitable apparatus and possible mechanisms for controlling the viewport adaptive streaming in a 360-degree camera device. In this regard reference is first made to Figures 1 and 2, where Figure 1 shows a block diagram of a multicamera system according to an example embodiment. F igure 2 shows an exemplified layout of an multi-camera system. The elements of Figs. 1 and 2 will be explained next.

[0036] Figure 1 illustrates an example of a multi-camera system 100, which may be able to capture and produce 360 degree stereo panorama video. The multi-camera system 100 comprises two or more camera units 102. In this example, the number of camera units 102 is eight, but may also be less than eight or more than eight. Each camera unit 102 is located at a different location in the multi-camera system, and may have a different orientation with respect to other camera units 102, so that they may capture a part of the 360 degree scene from different viewpoints substantially simultaneously. A pair of camera units 102 of the multi-camera system 100 may correspond with left and right eye viewpoints at a time. As an example, the camera units 102 may have an omnidirectional constellation, so that it has a 360° viewing angle in a 3D-space. In other words, such multi-camera system 100 may be able to see each direction of a scene so that each spot of the scene around the multi-camera system 100 can be viewed by at least one camera unit 102 or a pair of camera units 102.

[0037] Without losing generality, any two camera units 102 of the multi-camera system 100 may be regarded as a pair of camera units 102. Hence, a multi-camera system of two cameras may have only one pair of camera units, a multi-camera system of three cameras may have three pairs of camera units, a multi-camera system of four cameras may have six pairs of camera units, etc. Generally, a multi-camera system 100 comprising N camera units 102, where N is an integer greater than one, may have N(N-l) / 2 pairs of camera units 102. Accordingly, images captured by the camera units 102 at a certain time may be considered as N(N-l) / 2 pairs of captured images.

[0038] The multi-camera system 100 of Figure 1 may also comprise a processor 104 for controlling the operations of the multi-camera system 100. There may also be a memory 106 for storing data and computer code to be executed by the processor 104, and a transceiver 108 for communicating with, for example, a communication network and / or other devices in a wireless and / or wired manner. The multi-camera system 100 may further comprise a user interface (UI) 110 for displaying information to the user, for generating audio signals, and / or for receiving userinputs. However, the multi-camera system 100 need not comprise each feature mentioned above, or may comprise other features as well. For example, there may be electric and / or mechanical elements for adjusting and / or controlling optics of the camera units 102.

[0039] Figure 1 also illustrates some operational elements which may be implemented, for example, as a computer code which can be executed in the processor 104, in hardware, or both to perform a desired function. An optical flow estimation 114 may perform optical flow estimation to for pair of images of different camera units 102. Transform vectors or other information indicative of an amount interpolation / extrapolation to be applied to different parts of a viewport may have been stored into the memory 106 or they may be calculated e.g. as a function of the location of a pixel in question. The operation of the elements will be described later in more detail. It should be noted that there may also be other operational elements in the multi-camera system 100 than those depicted in Figure 1.

[0040] Figure 2 shows a perspective view of the multi-camera system 100, in accordance with an embodiment. In Figure 2, seven camera units 102a — 102g can be seen, but the multi-camera system 100 may comprise even more camera units which are not visible from this perspective view. Figure 2 also shows two microphones 112a, 112b, but the apparatus may also comprise one microphone or more than two microphones.

[0041] In accordance with an embodiment, the multi-camera system 100 may be controlled by another device, wherein the multi-camera system 100 and the other device may communicate with each other and a user may use a user interface of the other device for entering commands, parameters, etc. and the user may be provided with information from the multi-camera system 100 via the user interface of the other device.

[0042] Some terminology regarding the multi-camera system 100 will now be shortly described. A viewport is a part of the scene which is displayed e.g. by a head mounted display at a time. It is noted that the viewport may also be displayed by conventional monitors, i.e. displaying only zoomed-in or a bit zoomed-out viewport from whole 360 video. Both left and right eye images may have overlapping, but slightly different viewports. A camera space, or camera coordinates, stands for a coordinate system of an individual camera unit 102 whereas a world space, or world coordinates, stands for a coordinate system of the multi-camera system 100 as a whole. An optical flow may be used to describe how objects, surfaces, and edges in a visual scene move or transform, when an observing point moves between from a location of onecamera to a location of another camera. In some embodiments, there need not be any actual movement but it may virtually be determined how the view of the scene might change when a viewing point is moved from one camera unit to another camera unit.

[0043] A video codec consists of an encoder that transforms the input video into a compressed representation suited for storage / transmission and a decoder that can uncompress the compressed video representation back into a viewable form. A video encoder and / or a video decoder may also be separate from each other, i.e. need not form a codec. Typically encoder discards some information in the original video sequence in order to represent the video in a more compact form (that is, at lower bitrate).

[0044] Figures 3a and 3b show an encoder and decoder for encoding and decoding the 2D pictures. A video codec consists of an encoder that transforms an input video into a compressed representation suited for storage / transmission and a decoder that can uncompress the compressed video representation back into a viewable form. Typically, the encoder discards and / or loses some information in the original video sequence in order to represent the video in a more compact form (that is, at lower bitrate).

[0045] An example of an encoding process is illustrated in Figure 3a. Figure 3a illustrates an image to be encoded (In); a predicted representation of an image block (P'n); a prediction error signal (Dn); a reconstructed prediction error signal (D'n); a preliminary reconstructed image (I'n); a final reconstructed image (R'n); a transform (T) and inverse transform (T-l); a quantization (Q) and inverse quantization (Q-l); entropy encoding (E); a reference frame memory (RFM); inter prediction (Pinter); intra prediction (Pintra); mode selection (MS) and filtering (F).

[0046] An example of a decoding process is illustrated in Figure 3b. Figure 3b illustrates a predicted representation of an image block (P'n); a reconstructed prediction error signal (D'n); a preliminary reconstructed image (I'n); a final reconstructed image (R'n); an inverse transform (T- 1); an inverse quantization (Q-l); an entropy decoding (E-l); a reference frame memory (RFM); a prediction (either inter or intra) (P); and filtering (F).

[0047] Thus, the decoder reconstructs the output video by applying prediction means similar to the encoder to form a predicted representation of the pixel blocks (using the motion or spatial information created by the encoder and stored in the compressed representation) and prediction error decoding (inverse operation of the prediction error coding recovering the quantizedprediction error signal in spatial pixel domain). After applying prediction and prediction error decoding means the decoder sums up the prediction and prediction error signals (pixel values) to form the output video frame. The decoder (and encoder) can also apply additional filtering means to improve the quality of the output video before passing it for display and / or storing it as prediction reference for the forthcoming frames in the video sequence. The filtering may for example include one more of the following: deblocking, sample adaptive offset (SAO), and / or adaptive loop filtering (ALF).

[0048] Many hybrid video encoders, such as H.264 / AVC encoders, High Efficiency Video Coding (H.265 / HEVC a.k.a. HEVC) and Versatile Video Coding (H.266 / WC a.k.a. WC) encoders, encode the video information in two phases. Firstly pixel values in a certain picture area (or “block”) are predicted for example by motion compensation means (finding and indicating an area in one of the previously coded video frames that corresponds closely to the block being coded) or by spatial means (using the pixel values around the block to be coded in a specified manner). Secondly the prediction error, i.e. the difference between the predicted block of pixels and the original block of pixels, is coded. This is typically done by transforming the difference in pixel values using a specified transform (e.g. Discrete Cosine Transform (DCT) or a variant of it), quantizing the coefficients and entropy coding the quantized coefficients. By varying the fidelity of the quantization process, encoder can control the balance between the accuracy of the pixel representation (picture quality) and size of the resulting coded video representation (file size or transmission bitrate). Video codecs may also provide a transform skip mode, which the encoders may choose to use. In the transform skip mode, the prediction error is coded in a sample domain, for example by deriving a sample-wise difference value relative to certain adjacent samples and coding the sample-wise difference value with an entropy coder.

[0049] In temporal prediction, the sources of prediction are previously decoded pictures (a.k.a. reference pictures). In intra block copy (IBC; a.k.a. intra-block-copy prediction), prediction is applied similarly to temporal prediction but the reference picture is the current picture and only previously decoded samples can be referred in the prediction process. Interlayer or inter-view prediction may be applied similarly to temporal prediction, but the reference picture is a decoded picture from another scalable layer or from another view, respectively. In some cases, inter prediction may refer to temporal prediction only, while in other cases inter prediction may refer collectively to temporal prediction and any of intra block copy, inter-layerprediction, and inter-view prediction provided that they are performed with the same or similar process than temporal prediction. Inter prediction or temporal prediction may sometimes be referred to as motion compensation or motion-compensated prediction.

[0050] Inter prediction, which may also be referred to as temporal prediction, motion compensation, or motion-compensated prediction, reduces temporal redundancy. In inter prediction the sources of prediction are previously decoded pictures. Intra prediction utilizes the fact that adjacent pixels within the same picture are likely to be correlated. Intra prediction can be performed in spatial or transform domain, i.e., either sample values or transform coefficients can be predicted. Intra prediction is typically exploited in intra coding, where no inter prediction is applied.

[0051] In many video codecs, including H.264 / AVC, HEVC and WC, motion information is indicated by motion vectors associated with each motion compensated image block. Each of these motion vectors represents the displacement of the image block in the picture to be coded (in the encoder) or decoded (at the decoder) and the prediction source block in one of the previously coded or decoded images (or picture).

[0052] One outcome of the coding procedure is a set of coding parameters, such as motion vectors and quantized transform coefficients. Many parameters can be entropy-coded more efficiently if they are predicted first from spatially or temporally neighboring parameters. For example, a motion vector may be predicted from spatially adjacent motion vectors and only the difference relative to the motion vector predictor may be coded. Prediction of coding parameters and intra prediction may be collectively referred to as in-picture prediction.

[0053] The H.264 / AVC standard was developed by the Joint Video Team (JVT) of the Video Coding Experts Group (VCEG) of the Telecommunications Standardization Sector of International Telecommunication Union (ITU-T) and the Moving Picture Experts Group (MPEG) of International Organisation for Standardization (ISO) / International Electrotechnical Commission (IEC). The H.264 / AVC standard is published by both parent standardization organizations, and it is referred to as ITU-T Recommendation H.264 and ISO / IEC International Standard 14496-10, also known as MPEG-4 Part 10 Advanced Video Coding (AVC). Extensions of the H.264 / AVC include Scalable Video Coding (SVC) and Multiview Video Coding (MVC).

[0054] High Efficiency Video Coding (H.265 / HEVC a.k.a. HEVC) standard was developed by the Joint Collaborative Team - Video Coding (JCT-VC) of VCEG and MPEG. The standardwas published by both parent standardization organizations, and it is referred to as ITU-T Recommendation H.265 and ISO / IEC International Standard 23008-2, also known as MPEG-H Part 2 High Efficiency Video Coding (HEVC). Later versions of H.265 / HEVC included scalable, multiview, fidelity range, three-dimensional, and screen content coding extensions which may be abbreviated SHVC, MV-HEVC, REXT, 3D-HEVC, and SCC, respectively.

[0055] Versatile Video Coding (H.266 a.k.a. WC), defined in ITU-T Recommendation H.266 and equivalently in ISO / IEC 23090-3, (also referred to as MPEG-I Part 3) is a video compression standard developed as the successor to HEVC.

[0056] Some key definitions, bitstream and coding structures, and concepts of WC, especially regarding the picture partitioning, are described in this section as an example of a platform, where the embodiments may be implemented. Some of the key definitions, bitstream and coding structures, and concepts of H.266 / WC are the same as in H.264 / AVC and. The embodiments are not limited to H.266 / WC, but rather the description is given for one possible basis on top of which the aspects of the invention and the related embodiments may be partly or fully realized.

[0057] An elementary unit for the input to an encoder and the output of a decoder, respectively, in most cases is a picture. A picture given as an input to an encoder may also be referred to as a source picture, and a picture decoded by a decoder may be referred to as a decoded picture or a reconstructed picture.

[0058] The source and decoded pictures are each comprises of one or more sample arrays, such as one of the following sets of sample arrays:Luma (Y) only (monochrome),Luma and two chroma (YCbCr or YCgCo),Green, Blue and Red (GBR, also known as RGB),Arrays representing other unspecified monochrome or tri-stimulus color samplings (for example, YZX, also known as XYZ).

[0059] In the following, these arrays may be referred to as luma (or L or Y) and chroma, where the two chroma arrays may be referred to as Cb and Cr; regardless of the actual color representation method in use. The actual color representation method in use can be indicated e.g. in a coded bitstream e.g. using the Video Usability Information (VUI) syntax of HEVC or alike. A component may be defined as an array or single sample from one of the three sample arrays(luma and two chroma) that compose a picture e.g. in 4:2:0, 4:2:2 or 4:4:4 chroma format or the array or a single sample of the array that compose a picture in monochrome format.

[0060] A picture may be defined to be either frame or a field. A frame comprises a matrix of luma samples and possibly the corresponding chroma samples. A field is a set of alternate sample rows of a frame and may be used as encoder input, when the source signal is interlaced. Chroma sample arrays may be absent (and hence monochrome sampling may be in use) or chroma sample arrays may be subsampled when compared to luma sample arrays.

[0061] Some chroma formats (a.k.a color formats) may be summarized as follows:In monochrome sampling there is only one sample array, which may be nominally considered the luma array.In 4:2:0 sampling, each of the two chroma arrays has half the height and half the width of the luma array.In 4:2:2 sampling, each of the two chroma arrays has the same height and half the width of the luma array.In 4:4:4 sampling when no separate color planes are in use, each of the two chroma arrays has the same height and width as the luma array.

[0062] Partitioning may be defined as a division of a set into subsets such that each element of the set is in exactly one of the subsets.

[0063] In the following, partitioning a picture into subpictures, slices, and tiles according to H.266 / VVC is described more in detail.

[0064] A picture is divided into one or more tile rows and one or more tile columns. A tile is a sequence of coding tree units (CTU) that covers a rectangular region of a picture. The CTUs in a tile are scanned in raster scan order within that tile.

[0065] A slice consists of an integer number of complete tiles or an integer number of consecutive complete CTU rows within a tile of a picture. Consequently, each vertical slice boundary is always also a vertical tile boundary. It is possible that a horizontal boundary of a slice is not a tile boundary but consists of horizontal CTU boundaries within a tile; this occurs when a tile is split into multiple rectangular slices, each of which consists of an integer number of consecutive complete CTU rows within the tile.

[0066] Two modes of slices are supported, namely the raster-scan slice mode and the rectangular slice mode. In the raster-scan slice mode, a slice contains a sequence of completetiles in a tile raster scan of a picture. In the rectangular slice mode, a slice contains either a number of complete tiles that collectively form a rectangular region of the picture or a number of consecutive complete CTU rows of one tile that collectively form a rectangular region of the picture. Tiles within a rectangular slice are scanned in tile raster scan order within the rectangular region corresponding to that slice.

[0067] A syntax element may be defined as an element of data represented in the bitstream. A syntax structure may be defined as zero or more syntax elements present together in the bitstream in a specified order.

[0068] A NAL unit may be defined as a syntax structure containing an indication of the type of data to follow and bytes containing that data in the form of an RBSP interspersed as necessary with start code emulation prevention bytes. A raw byte sequence payload (RBSP) may be defined as a syntax structure containing an integer number of bytes that is encapsulated in a NAL unit. An RBSP is either empty or has the form of a string of data bits containing syntax elements followed by an RBSP stop bit and followed by zero or more subsequent bits equal to 0.

[0069] NAL units consist of a header and payload. The NAL unit header indicates the type of the NAL unit among other things.

[0070] NAL units can be categorized into Video Coding Layer (VCL) NAL units and non- VCL NAL units. VCL NAL units are typically coded slice NAL units.

[0071] A non-VCL NAL unit may be for example one of the following types: a sequence parameter set, a picture parameter set, a supplemental enhancement information (SEI) NAL unit, an access unit delimiter, an end of sequence NAL unit, an end of bitstream NAL unit, or a filler data NAL unit. Parameter sets may be needed for the reconstruction of decoded pictures, whereas many of the other non-VCL NAL units are not necessary for the reconstruction of decoded sample values.

[0072] Some coding formats specify parameter sets that may carry parameter values needed for the decoding or reconstruction of decoded pictures. A parameter may be defined as a syntax element of a parameter set. A parameter set may be defined as a syntax structure that contains parameters and that can be referred to from or activated by another syntax structure for example using an identifier.

[0073] Some types of parameter sets are briefly described in the following but it needs to be understood that other types of parameter sets may exist and that embodiments may be appliedbut are not limited to the described types of parameter sets. A video parameter set (VPS) may include parameters that are common across multiple layers in a coded video sequence or describe relations between layers. Parameters that remain unchanged through a coded video sequence (in a single-layer bitstream) or in a coded layer video sequence may be included in a sequence parameter set (SPS). In addition to the parameters that may be needed by the decoding process, the sequence parameter set may optionally contain video usability information (VUI), which includes parameters that may be important for buffering, picture output timing, rendering, and resource reservation. A picture parameter set (PPS) contains such parameters that are likely to be unchanged in several coded pictures. A picture parameter set may include parameters that can be referred to by the coded image segments of one or more coded pictures. A header parameter set (HPS) has been proposed to contain such parameters that may change on picture basis. In VVC, an Adaptation Parameter Set (APS) may comprise parameters for decoding processes of different types, such as adaptive loop filtering or luma mapping with chroma scaling.

[0074] A parameter set may be activated when it is referenced e.g., through its identifier. For example, a header of an image segment, such as a slice header, may contain an identifier of the PPS that is activated for decoding the coded picture containing the image segment. A PPS may contain an identifier of the SPS that is activated, when the PPS is activated. An activation of a parameter set of a particular type may cause the deactivation of the previously active parameter set of the same type. Instead of explicitly activating and deactivating parameter sets, the syntax element values of a parameter set may be used in the (de)coding process when the parameter set is referenced e.g. through its identifier, similarly as explained above regarding parameter set activation.

[0075] An adaptation parameter set (APS) may be defined as a syntax structure that applies to zero or more slices. There may be different types of adaptation parameter sets. An adaptation parameter set may for example contain filtering parameters for a particular type of a filter. In WC, three types of APSs are specified carrying parameters for one of: adaptive loop filter (ALF), luma mapping with chroma scaling (LMCS), and scaling lists. A scaling list may be defined as a list that associates each frequency index with a scale factor for the scaling process, which multiplies transform coefficient levels by a scaling factor, resulting in transform coefficients. In WC, an APS is referenced through its type (e.g. ALF, LMCS, or scaling list) and an identifier. In other words, different types of APSs have their own identifier value ranges.

[0076] Instead of or in addition to parameter sets at different hierarchy levels (e.g., sequence and picture), video coding formats may include header syntax structures, such as a sequence header or a picture header. A sequence header may precede any other data of the coded video sequence in the bitstream order. A picture header may precede any coded video data for the picture in the bitstream order.

[0077] In VVC, a picture header (PH) may be defined as a syntax structure containing syntax elements that apply to all slices of a coded picture. In other words, contains information that is common for all slices of the coded picture associated with the PH. A picture header syntax structure is specified as an RBSP and is contained in a NAL unit.

[0078] A bitstream may be defined as a sequence of bits, which may in some coding formats or standards be in the form of a NAL unit stream or a byte stream, that forms the representation of coded pictures and associated data forming one or more coded video sequences. A first bitstream may be followed by a second bitstream in the same logical channel, such as in the same file or in the same connection of a communication protocol. An elementary stream (in the context of video coding) may be defined as a sequence of one or more bitstreams. In some coding formats or standards, the end of the first bitstream may be indicated by a specific NAL unit, which may be referred to as the end of bitstream (EOB) NAL unit and which is the last NAL unit of the bitstream.

[0079] The phrase along the bitstream (e.g. indicating along the bitstream) or along a coded unit of a bitstream (e.g. indicating along a coded tile) may be used in claims and described embodiments to refer to transmission, signaling, or storage in a manner that the "out-of-band" data is associated with but not included within the bitstream or the coded unit, respectively. The phrase decoding along the bitstream or along a coded unit of a bitstream or alike may refer to decoding the referred out-of-band data (which may be obtained from out-of-band transmission, signaling, or storage) that is associated with the bitstream or the coded unit, respectively. For example, the phrase along the bitstream may be used when the bitstream is contained in a container file, such as a file conforming to the ISO Base Media File Format, and certain file metadata is stored in the file in a manner that associates the metadata to the bitstream, such as boxes in the sample entry for a track containing the bitstream, a sample group for the track containing the bitstream, or a timed metadata track associated with the track containing the bitstream.

[0080] A coded video sequence (CVS) may be defined as such a sequence of coded pictures in decoding order that is independently decodable and is followed by another coded video sequence or the end of the bitstream. A coded video sequence may additionally or alternatively be specified to end, when a specific NAL unit, which may be referred to as an end of sequence (EOS) NAL unit, appears in the bitstream.

[0081] Media coding standards may specify “profiles” and “levels.” A profile may be defined as a subset of algorithmic features of the standard (of the encoding algorithm or the equivalent decoding algorithm). In another definition, a profile is a specified subset of the syntax of the standard (and hence implies that the encoder may only use features that result into a bitstream conforming to that specified subset and the decoder may only support features that are enabled by that specified subset).

[0082] A level may be defined as a set of limits to the coding parameters that impose a set of constraints in decoder resource consumption. In another definition, a level is a defined set of constraints on the values that may be taken by the syntax elements and variables of the standard. These constraints may be simple limits on values. Alternatively, or in addition, they may take the form of constraints on arithmetic combinations of values (e.g., picture width multiplied by picture height multiplied by number of pictures decoded per second). Other means for specifying constraints for levels may also be used. Some of the constraints specified in a level may for example relate to the maximum picture size, maximum bitrate and maximum data rate in terms of coding units, such as macroblocks, per a time period, such as a second. The same set of levels may be defined for all profiles. It may be preferable for example to increase interoperability of terminals implementing different profiles that most or all aspects of the definition of each level may be common across different profiles.

[0083] Video encoders may utilize Lagrangian cost functions to find coding modes, e.g. the desired block partitioning and / or motion vectors. This kind of cost function uses a weighting factor A, to tie together the (exact or estimated) image distortion due to lossy coding methods and the (exact or estimated) amount of information that is required to represent the pixel value in an image area:C = D + AR (Eq. 1) where C is the Lagrangian cost to be minimized, D is the image distortion (e.g Mean Squared Error), e.g. with the block partitioning and / or motion vectors considered, and R is the number ofbits needed to represent the required data to reconstruct the image block in the decoder (including the amount of data to represent the block partitioning and / or the motion vectors). A Lagrangian cost may be a way to quantify rate distortion (RD) performance. Using a Lagrangian cost in coding mode selection may be referred to as rate-distortion optimization or ratedistortion-optimized encoding.

[0084] Virtual reality is a rapidly developing area of technology in which image or video content, sometimes accompanied by audio, is provided to a user device such as a user headset (a.k.a. head-mounted display, HMD). As is known, the user device may be provided with a live or stored feed from a content source, the feed representing a virtual space for immersive output through the user device.

[0085] Terms 360-degree video or virtual reality (VR) video may sometimes be used interchangeably. They may generally refer to video content that provides such a large field of view that only a part of the video is displayed at a single point of time in typical displaying arrangements. For example, VR video may be viewed on a head-mounted display (HMD) that may be capable of displaying e.g. about 100-degree field of view. The spatial subset of the VR video content to be displayed may be selected based on the orientation of the HMD. In another example, a typical flat-panel viewing environment is assumed, wherein e.g. up to 40-degree field-of-view may be displayed. When displaying wide-FOV content (e.g. fisheye) on such a display, it may be preferred to display a spatial subset rather than the entire picture.

[0086] A coordinate system suitable for 360-degree images and / or video may be defined as follows. The coordinate system consists of a unit sphere and three coordinate axes, namely the X (back-to-front) axis, the Y (lateral, side-to-side) axis, and the Z (vertical, up) axis, where the three axes cross at the centre of the sphere. The location of a point on the sphere is identified by a pair of sphere coordinates azimuth (4>) and elevation (0), where the azimuth may represent rotation around the Z-axis and the elevation may represent rotation around the Y-axis or the X- axis. The value range of azimuth may be defined to be -180.0, inclusive, to 180.0, exclusive, degrees. The value range of elevation may be defined to be -90.0 to 90.0, inclusive, degrees.

[0087] MPEG Omnidirectional Media Format (ISO / IEC 23090-2) is a virtual reality (VR) system standard. OMAF defines a media format (comprising both file format derived from ISOBMFF and streaming formats for DASH and MPEG Media Transport). OMAF supports 360° video, images, and audio, as well as the associated timed text and facilitates three degreesof freedom (3DoF) content consumption, meaning that a viewport can be selected with any azimuth and elevation range and tilt angle that are covered by the omnidirectional content but the content is not adapted to any translational changes of the viewing position.

[0088] MPEG Omnidirectional Media Format (OMAF) is described in the following by referring to Figure 4. A real-world audio-visual scene (A) is captured by audio sensors as well as a set of cameras or a camera device with multiple lenses and sensors. The acquisition results in a set of digital image / video (Bi) and audio (Ba) signals. The cameras / lenses typically cover all directions around the center point of the camera set or camera device, thus the name of 360- degree video.

[0089] Audio can be captured using many different microphone configurations and stored as several different content formats, including channel-based signals, static or dynamic (i.e. moving through the 3D scene) object signals, and scene-based signals (e.g., Higher Order Ambisonics). The channel-based signals typically conform to one of the loudspeaker layouts defined in CICP. In an omnidirectional media application, the loudspeaker layout signals of the rendered immersive audio program are binaraulized for presentation via headphones.

[0090] The images (Bi) of the same time instance are stitched, projected, and mapped onto a packed picture (D).

[0091] For monoscopic 360-degree video, the input images of one time instance are stitched to generate a projected picture representing one view. The breakdown of image stitching, projection, and region-wise packing process for monoscopic content is illustrated with Figure 5a and described as follows. Input images (Bi) are stitched and projected onto a three-dimensional projection structure that may for example be a unit sphere. The projection structure may be considered to comprise one or more surfaces, such as plane(s) or part(s) thereof. A projection structure may be defined as three-dimensional structure consisting of one or more surface(s) on which the captured VR image / video content is projected, and from which a respective projected picture can be formed. The image data on the projection structure is further arranged onto a two- dimensional projected picture (C). The term projection may be defined as a process by which a set of input images are projected onto a projected frame. There may be a pre-defined set of representation formats of the projected picture, including for example an equirectangular projection (ERP) format and a cube map projection (CMP) format. It may be considered that the projected picture covers the entire sphere.

[0092] Optionally, region-wise packing is then applied to map the projected picture onto a packed picture. If the region-wise packing is not applied, the packed picture is identical to the projected picture, and this picture is given as input to image / video encoding. Otherwise, regions of the projected picture are mapped onto a packed picture (D) by indicating the location, shape, and size of each region in the packed picture, and the packed picture (D) is given as input to image / video encoding. The term region-wise packing may be defined as a process by which a projected picture is mapped to a packed picture. The term packed picture may be defined as a picture that results from region-wise packing of a projected picture.

[0093] In the case of stereoscopic 360-degree video, the input images of one time instance are stitched to generate a projected picture representing two views, one for each eye. Both views can be mapped onto the same packed picture, as described below in relation to the Figure 5b, and encoded by a traditional 2D video encoder. Alternatively, each view of the projected picture can be mapped to its own packed picture, in which case the image stitching, projection, and regionwise packing is like described above with the Figure 5a. A sequence of packed pictures of either the left view or the right view can be independently coded or, when using a multiview video encoder, predicted from the other view.

[0094] The breakdown of image stitching, projection, and region-wise packing process for stereoscopic content where both views are mapped onto the same packed picture is illustrated with the Figure 5b and described as follows. Input images (Bi) are stitched and projected onto two three-dimensional projection structures, one for each eye. The image data on each projection structure is further arranged onto a two-dimensional projected picture (CL for left eye, CR for right eye), which covers the entire sphere. Frame packing is applied to pack the left view picture and right view picture onto the same projected picture. Optionally, region- wise packing is then applied to the pack projected picture onto a packed picture, and the packed picture (D) is given as input to image / video encoding. If the region-wise packing is not applied, the packed picture is identical to the projected picture, and this picture is given as input to image / video encoding.

[0095] The image stitching, projection, and region-wise packing process can be carried out multiple times for the same source images to create different versions of the same content, e.g. for different orientations of the projection structure. Similarly, the region- wise packing process can be performed multiple times from the same projected picture to create more than one sequence of packed pictures to be encoded.

[0096] 360-degree panoramic content (i.e., images and video) cover horizontally the full 360- degree field-of-view around the capturing position of an imaging device. The vertical field-of- view may vary and can be e.g. 180 degrees. Panoramic image covering 360-degree field-of-view horizontally and 180-degree field-of-view vertically can be represented by a sphere that can be mapped to a bounding cylinder that can be cut vertically to form a 2D picture (this type of projection is known as equirectangular projection). The process of forming a monoscopic equirectangular panorama picture is illustrated in Figure 6. A set of input images, such as fisheye images of a camera array or a camera device with multiple lenses and sensors, is stitched onto a spherical image. The spherical image is further projected onto a cylinder (without the top and bottom faces). The cylinder is unfolded to form a two-dimensional projected frame. In practice one or more of the presented steps may be merged; for example, the input images may be directly projected onto a cylinder without an intermediate projection onto a sphere. The projection structure for equirectangular panorama may be considered to be a cylinder that comprises a single surface.

[0097] In general, 360-degree content can be mapped onto different types of solid geometrical structures, such as polyhedron (i.e. a three-dimensional solid object containing flat polygonal faces, straight edges and sharp corners or vertices, e.g., a cube or a pyramid), cylinder (by projecting a spherical image onto the cylinder, as described above with the equirectangular projection), cylinder (directly without projecting onto a sphere first), cone, etc. and then unwrapped to a two-dimensional image plane.

[0098] In some cases panoramic content with 360-degree horizontal field-of-view but with less than 180-degree vertical field-of-view may be considered special cases of panoramic projection, where the polar areas of the sphere have not been mapped onto the two-dimensional image plane. In some cases a panoramic image may have less than 360-degree horizontal field- of-view and up to 180-degree vertical field-of-view, while otherwise has the characteristics of panoramic projection format.

[0099] OMAF allows the omission of image stitching, projection, and region-wise packing and encode the image / video data in their captured format. In this case, images D are considered the same as images Bi and a limited number of fisheye images per time instance are encoded.

[0100] For audio, the stitching process is not needed, since the captured signals are inherently immersive and omnidirectional.

[0101] The stitched images (D) are encoded as coded images (Ei) or a coded video bitstream (Ev). The captured audio (Ba) is encoded as an audio bitstream (Ea). The coded images, video, and / or audio are then composed into a media file for file playback (F) or a sequence of an initialization segment and media segments for streaming (Fs), according to a particular media container file format. In this specification, the media container file format is the ISO base media file format. The file encapsulator also includes metadata into the file or the segments, such as projection and region-wise packing information assisting in rendering the decoded packed pictures.

[0102] The metadata in the file may include:- the projection format of the projected picture,- fisheye video parameters,- the area of the spherical surface covered by the packed picture,- the orientation of the projection structure corresponding to the projected picture relative to the global coordinate axes,- region-wise packing information, and- region- wise quality ranking (optional).

[0103] The segments Fs are delivered using a delivery mechanism to a player.

[0104] The file that the file encapsulator outputs (F) is identical to the file that the file decapsulator inputs (F'). A file decapsulator processes the file (F') or the received segments (F's) and extracts the coded bitstreams (E'a, E'v, and / or E'i) and parses the metadata. The audio, video, and / or images are then decoded into decoded signals (B'a for audio, and D' for images / video). The decoded packed pictures (D') are projected onto the screen of a head-mounted display or any other display device based on the current viewing orientation or viewport and the projection, spherical coverage, projection structure orientation, and region-wise packing metadata parsed from the file. Likewise, decoded audio (B'a) is rendered, e.g. through headphones, according to the current viewing orientation. The current viewing orientation is determined by the head tracking and possibly also eye tracking functionality. Besides being used by the Tenderer to render the appropriate part of decoded video and audio signals, the current viewing orientation may also be used the video and audio decoders for decoding optimization.

[0105] The process described above is applicable to both live and on-demand use cases.

[0106] The human eyes are not capable of viewing the whole 360 degrees space, but are limited to a maximum horizontal and vertical FoVs (HHFoV, HVFoV). Also, a HMD device has technical limitations that allow only viewing a subset of the whole 360 degrees space in horizontal and vertical directions (DHFoV, DVFoV)).

[0107] At any point of time, a video rendered by an application on a HMD renders a portion of the 360 degrees video. This portion is defined here as viewport. A viewport may be defined as a region of omnidirectional image or video suitable for display and viewing by the user. A current viewport (which may be sometimes referred simply as a viewport) may be defined as the part of the spherical video that is currently displayed and hence is viewable by the user(s). A viewport is a window on the 360-degree world represented in the omnidirectional video displayed via a rendering display. A viewport may be characterized by a horizontal field-of-view (VHFoV) and a vertical field-of-view (WFoV). In the following, the horizontal field-of-view of the viewport will be abbreviated with HFoV and, respectively, the vertical field-of-view of the viewport will be abbreviated with VFoV.

[0108] A recent trend in streaming in order to reduce the streaming bitrate of VR video is the following: a subset of 360-degree video content covering the primary viewport (i.e., the current view orientation) is transmitted at the best quality / resolution, while the remaining of 360-degree video is transmitted at a lower quality / resolution. When the viewing orientation changes, e.g. when the user turns his / her head when viewing the content with a head-mounted display, another version of the content needs to be streamed, matching the new viewing orientation.

[0109] Regarding the actual apparatus implementation of the camera device capturing the 360-degree content, the current live streaming 360 cameras typically utilize hardware stitching IC (i.e., a specific ASIC) to perform the image stitching from a plurality of image sensors so as to create a stitched 360-degree video stream. The stitched 360-degree video stream is then provided to a processing unit, such as a central processing unit (CPU), for transcoding, after which the content is transmitted from the 360 camera for viewing e.g. by a HMD or other type of VR headset or further processing to be carried out e.g. by an external processing unit, such as a personal computer (PC), a server or a cloud computing unit.

[0110] Processing the stitched 360-degree video stream requires a huge amount of computational power from the CPU. For example, in a contemporary 360 camera with two image sensors, the size of each sensor may be up to 20 megapixels (5184x3888 pixels). When theimages are stitched together, the overlapping image regions are combined to achieve final 7680x3840 pixels output resolution. With 8-bit pixel depth, this results in 7680x3840x24 = over 707 megapixels per frame. With the frame rate of 30 fps, the 360-degree video stream produces a raw data rate of over 21 Gbps. When supplied to an appropriate encoding process, such as H.265 encoding, the resulting data rate is still about 150 Mbps.

[0111] Considering the fact that binocular human vision field of view (FOV) is approximately 200° x 135° (horizontal x vertical), wherein the accurate vision FOV is only around 60° x 55°, and whereas the VR / AR / MR applications can operate with e.g. 90° x 60° viewport, it can be concluded that a lot of computation power is wasted by outputting full 360° video stream in the case of live streaming for human eyes. The excess amount of data rate also results in large bandwidth requirements for the network.

[0112] Moreover, low-latency requirement of many real-time applications causes challenges to designing the stitching IC. A delay of 100+ milliseconds could prevent any real-time remote operation from making quick decisions in some mission-critical use cases.

[0113] Now an improved method and apparatus for enabling more flexible control of the viewport processing of the output video stream are introduced.

[0114] The method according to an aspect, as shown in Figure 7a, comprises obtaining (700), in a capturing apparatus, image data from one or more image sensors; receiving (702) a signalling regarding parameters of a viewport to be used in rendering the 360-degree video stream; stitching and cropping (704) the image data from the one or more image sensors into a 360-degree video stream having the viewport according to the signalling; and transmitting (706) the cropped 360-degree video stream corresponding to the viewport.

[0115] Accordingly, a 360-degree camera device is configured to obtain image data from at least one, but typically two or more image sensors. The image sensors are configured to provide image data, which enables stitching into a full 360-degree video stream, i.e. a video stream with 360° x 180° FOV. The 360 camera device receives signalling regarding parameters of a viewport to be used in rendering the 360-degree video stream. The signalling may be received from a remote apparatus, such as a client device or a server, wherein the apparatus may be integrated to the 360 camera device or connected to the 360-degree camera device via a wireless or wired interface. The image data from the one or more image sensors is then stitched into a 360-degree video stream and cropped into the viewport according to the signalling, wherein the stitching and 1the cropping may be combined to be carried out in the same processing step. The stitching and the cropping takes place prior to transcoding and transmission, whereupon significant savings can be achieved in the amount of transcoding time / resources, as well as in the required transmission bandwidth.

[0116] The method according to another aspect, as shown in Figure 7b, comprises obtaining (710), in a capturing apparatus, image data from one or more image sensors; stitching (712) the image data into a 360-degree video stream; receiving (714) a signalling regarding parameters of a viewport to be used in rendering the 360-degree video stream; cropping (716) the 360-degree video stream into the viewport according to the signalling; and transmitting (718) the cropped 360-degree video stream corresponding to the viewport.

[0117] Thus, the difference to the method of Figure 7a is that in the method of Figure 7b, the stitching and the cropping are carried out in the separate processing steps, i.e. the image data from the one or more image sensors is first stitched into a 360-degree video stream and the cropping is carried out for the stitched 360-degree video, wherein the viewport is adjusted according to the signalling. The preferred choice between these approaches may depending e.g. on the camera device hardware / software architecture,

[0118] According to an embodiment, the method comprises adjusting, based on the signalling, the number of image sensors or lenses, from which the cropped 360-degree video stream is stitched.

[0119] Thus, the signalling may provide parameters for controlling the image sensors of the360 camera device and / or their individual lenses adjust viewport size together with the stitching process to generate the viewport frame from one or more lenses / image sensors, for example in an on-demand mode. It is noted that the viewport frame can be in raw or encoded format depending on system implementation.

[0120] According to an embodiment, the method comprises adjusting the viewport to locate at a center of the stitched 360-degree video stream.

[0121] According to an embodiment, the method comprises rotating the stitched 360-degree video stream according to the signalling.

[0122] In either case, each video frame is processed individually based on required viewport settings, for example in an on-demand mode, such that the output video stream is provided according to the required viewport settings.

[0123] According to an embodiment, the method comprises adjusting the viewport according to a default value.

[0124] For example, in absence of any specific signalling regarding the parameters of the viewport to be used, a default value of the viewport may be used instead.

[0125] According to an embodiment, the method comprises encoding the cropped 360-degree video stream prior to transmission.

[0126] By encoding the already cropped and thus significantly size-reduced viewport content by an appropriate video encoder, the amount of data to be transmitted can still be drastically reduced.

[0127] According to an embodiment, the method comprises storing the stitched 360-degree video stream in a buffer memory; and fetching the stitched 360-degree video stream from the buffer memory for cropping.

[0128] In some cases, for example, if the image stitching unit does not support cropping functionality, it may be useful to store the original frame or video stream in a buffer memory, from where it may be fetched and the cropped content may be generated thereof.

[0129] In the following, various implementation embodiments are described regarding the 360 degree camera apparatus. Figure 8 shows a simple implementation, wherein the apparatus (800) comprises means for obtaining (804) image data from one or more image sensors (802); means for stitching (806) the image data into a 360-degree video stream; means for receiving a signalling (816) regarding parameters of a viewport to be used in rendering the 360-degree video stream; means for cropping (818) the 360-degree video stream into the viewport according to the signalling; and means for transmitting (814, 816) the cropped 360-degree video stream corresponding to the viewport.

[0130] Thus, the apparatus 800 comprises at least one, but typically a plurality of, such as 2, 3 or 4, image sensors 802. The video data obtained via a bus 804 from the image sensors is initially in raw format. For example, when captured by two image sensors with 12MP resolution each, the total RAW image size is over 850Mb (two sensors, each having resolution of 4000x3000 pixels, 12b per subpixel). The apparatus comprises a stitching unit 806, which stitches the raw format data from the image sensors into a 360-degreen video stream. The stitching unit may also carry out image format conversion, for example into YUV12 format. After image stitching and conversion, assuming the stitched image size of 7680x2880 pixels and the image format YUV12,the frame size is reduced to approximately 265Mb. Further assuming 30fps video, the YUV12 content would still mean approximately 8Gbps data rate.

[0131] The apparatus may comprise an intermediate memory 808, such as a RAM, for buffering the full 360-degree video data before further processing. The apparatus may comprise a graphics pipeline unit 810, which may carry out various operations, for example Al (Artificial Intelligence) analysis of the image data, IQ (Image Quality) improvements, such as white balance and color tone adjustments, overlay additions, blurring, etc. The graphics pipeline operations can be performed on the video content, for example in YUV12 format. The apparatus may comprise, or is functionally connected to, a video encoder 812, such as a H.265 encoder. Encoding the approximately 8Gbps data rate of the previously processed YUV12 video into H.265 format would result in ~8Mbps (assuming 99% compression rate) video output, significantly reducing necessary bandwidth and computational power.

[0132] The apparatus comprises means for receiving a signalling 816 regarding parameters of a viewport to be used in rendering the 360-degree video stream, wherein a data transmission interface 816 may be utilized in receiving the signalling. The data transmission interface may be implemented, for example according to RJ45 or USB protocols or using any wireless protocol without limiting the implementation to only these examples. The signalling may be carried out using, for example, real-time transport control protocol (RTCP), stream control transmission protocol (SCTP) or other protocols for client communication.

[0133] The apparatus comprises a viewport control unit 818, which may also be referred to as a viewport control application (VCA). Thus, the viewport control unit may be implemented as a VCA software, which receives control commands from a client (e.g. a camera user) e.g. via RTCP protocol.

[0134] In this simple embodiment, the VCA performs the cropping of the 360-degree video stream into the viewport according to the signalling. The VCA may control viewport handling inside camera to crop the image size to e.g. 1920X960 (90° x 60° FOV), which would mean approximately 12-fold reduction in the data rate, and thus in the required transmission bandwidth. The apparatus comprises a packetizing unit 814, wherein the VCA controls the viewport settings according to the signalling and provides the packetizing and the transmission settings for the cropped 360-degree video. The data transmission interface 816 may then be used for transmitting the cropped 360-degree video stream corresponding to the viewport settings.

[0135] In this simple embodiment, the VCA performs the viewport handling at the final stage of the processing pipeline, where the output content is packetized and transmitted. While no savings in camera resources are obtained due to handling the full 360-degree video content through whole pipeline, the embodiment provides major savings in output data bandwidth compared to the existing 360 cameras, where 360 video streaming of high-resolution content requires huge data bandwidth.

[0136] However, the tasks of the VCA may be distributed to two or even more separate units. Thus, a viewport control driver unit, which may also be referred to as a viewport control driver software (VCDSW) module, may be introduced to operate together with the VCA to control the viewport and the involved processing steps within the apparatus more flexibly.

[0137] According to an embodiment, the VCA controls the VCDSW to perform cropping of the full 360 video into required FOV, and the VCA then controls the whole video handling pipeline to perform necessary video handling. The position of the video handling pipeline where the VCDSW carries out the cropping may nevertheless vary, depending on the capabilities of the units involved in the video handling pipeline. Thus, the VCDSW adapts to the architecture and graphics pipeline features of the underlying CPU and / or GPU chipset.

[0138] According to an embodiment, the VCDSW is configured to control individual lens controllers of the image sensors and the stitching unit in an on-demand mode to generate the viewport frame from one or more lenses. Thus, the lens controllers and the stitching unit are controlled according to the requested viewport size (width and height with respect to the spherical space, e.g. 360x180 coordinate system).

[0139] Figure 9 shows an implementation embodiment, where the VCDSW 820 is configured to control the stitching unit 808 to carry out the cropping. Otherwise, the same reference numbers as used in Figure 8 apply. Thus, assuming the YUV12 content of the full 360 video having the frame size of approximately 265Mb and 8Gbps data rate for 30fps video, the VCDSW may instruct the stitching unit to crop the frame size into e.g. 1920x960 (90° x 60° FOV), which would reduce the image size to ~22.1Mb and video data rate to ~660Mbps before any further processing steps. Accordingly, the 12-fold reduction in data rate already in the early stage of the processing pipeline converts to a more efficient graphics pipeline processing requiring significantly less power consumption, as well as reducing the transcoding load, thereby further reducing the power consumption.

[0140] According to an embodiment, the VCA is configured to control the encoding 812 settings. Thus, the 660Mbps video data rate, if encoded into H.265 format 99% compression rate, would result in ~6.6Mbps video output. This example signifies the importance of reducing data rate already in the early stage of the processing pipeline, both in terms of the needed transmission bandwidth and the computational power.

[0141] Thus, the VCDSW can be placed after the stitching unit 806 to process the stitched 360 frame.

[0142] According to an embodiment, the VCDSW is configured to instruct the stitching unit with the viewport orientation so that the viewport is at the center of the stitched 360 frame.

[0143] According to an embodiment, the VCDSW may rotate the stitched 360 frame according to the required viewport orientation.

[0144] In either case, by handling each video frame individually, the VCDSW essentially manipulates the output video stream based on required viewport settings. An alternative way is for the stitching unit to receive images from all camera sensors and then perform stitching and cropping based on the viewport parameters.

[0145] According to an embodiment, the VCDSW is configured to control artificial intelligence content analysis to be carried out only to content within said viewport.

[0146] Hence, if the 360-degree camera device supports Al based content analysis and possibly content manipulation, such as face and license plate recognition and blurring, this can also be controlled by VCDSW in a way that only the cropped content is analysed, thereby further reducing the computation time and power.

[0147] According to an embodiment, the VCDSW is configured to control image quality enhancement functions to be carried out only to content within said viewport

[0148] Hence, if there are image quality (IQ) related enhancements performed in CPU graphics pipeline, these manipulations will be performed only on cropped content, which also reduces the computation time and power.

[0149] According to an embodiment, the VCDSW is configured to control the cropping to be carried out for the stitched 360-degree video stream stored in a buffer memory 808.

[0150] Thus, the original frame or video stream may be saved in a temporary memory or an on-device storage 808, from where the VCDSW may generate the cropped content, and the VCA may transfer it to the encoding unit, and then transmit it as camera output. For example, if theimage stitching unit does not support cropping functionality, the VCDSW can control the video pipeline as illustrated by Figure 10. In this case, there may exist more latency, as the full 360- degree video data is first stored into RAM and then only the cropped region is read out for additional processing and transmission. This also sets some further requirements for memory management to allow real-time processing of the video stream.

[0151] Depending on the camera device software architecture, it might be necessary to keep the VCA as a simple RTCP service and utilize the VCDSW to perform all viewport handling related tasks. Figure 11 illustrates an implementation according to this approach. Therein, the VCA receives parameters for the settings, such as the viewport control parameters and the requested transmission settings. The VCA parses the parameters for the settings and forwards them to VCDSW for handling. The VCA may still control the packetizing and transmission settings, but they can also be handled by the VCDSW, if needed. This approach demonstrates the flexibility of work division between the VCA and the VCDSW components. If the operating system requires viewport handling functionality to be divided into multiple software layers, the functionalities of the VCA and the VCDSW can be divided accordingly, as well as necessary adaptation software to allow proper operation of this feature.

[0152] According to an embodiment, the VCDSW is configured to control multiple contents with different quality to be created from the viewport.

[0153] Thus, the VCDSW may output multiple viewport content per request, wherein the output may have different qualities, for example in terms of resolution and encoding quality. The multiple content may be multiplexed or bundled over the same transport channel using some image or video container format, such as HEIF or ISOBMFF. Because the transcoding of the limited FOV video stream takes much less time than full 360-degree video stream transcoding, VCA and VCDSW may configure temporal multiplexing in a way that allows multiple logically simultaneous viewports to be offered to viewer. This provides more flexibility upon the rendering to select viewport content with appropriate quality.

[0154] It is noted that in any of the above embodiments, it is always possible to bypass the cropping features and provide the full 360-degree video stream. Bypassing the cropping features may be configured, for example, by adjusting RTCP and VCA settings.

[0155] The embodiments are described herein may provide various advantages. A major benefit is that they enable bandwidth efficient viewport optimized 360-degree video streamingfrom the 360-degree camera device. The internal processing workload of the 360-degree camera may be optimized. Multiple simultaneous viewport outputs are also enabled. The embodiments also enable to save time and cost by reducing extra processing outside the camera, e.g. due to no need for GPU enabled processing. This results in reduced streaming latency and reduced software complexity. This also results in reduced power consumption and operating temperature of the 360-degree camera device, thereby allowing it to operate in more demanding conditions.

[0156] The embodiments relating to the encoding aspects may be implemented in an apparatus comprising means for obtaining image data from one or more image sensors; means for receiving a signalling regarding parameters of a viewport to be used in rendering the 360- degree video stream; means for stitching and cropping the image data from the one or more image sensors into a 360-degree video stream having the viewport according to the signalling; and means for transmitting the cropped 360-degree video stream corresponding to the viewport.

[0157] According to an embodiment, said means for receiving the signalling regarding parameters of the viewport comprise a viewport control unit.

[0158] According to an embodiment, said means for cropping the 360-degree video stream into the viewport according to the signalling comprise the viewport control unit or a viewport control driver unit.

[0159] According to an embodiment, said means for stitching the image data from the one or more image sensors into a 360-degree video stream and cropping the 360-degree video stream having the viewport according to the signalling are separate means, wherein said stitching is carried out prior to the cropping.

[0160] According to an embodiment, the apparatus comprises means for adjusting, based on the signalling, the number of image sensors or lenses, from which the cropped 360-degree video stream is stitched.

[0161] According to an embodiment, the apparatus comprises means for aligning a center or origin points of the viewport and the stitched 360 video stream.

[0162] According to an embodiment, the apparatus comprises means for rotating the stitched360-degree video stream according to the signalling.

[0163] According to an embodiment, the apparatus comprises means for encoding the cropped 360-degree video stream prior to transmission.

[0164] According to an embodiment, the apparatus comprises means for storing the stitched 360-degree video stream in a buffer memory; and means for fetching the stitched 360-degree video stream from the buffer memory for cropping.

[0165] According to an embodiment, any of above means comprise the viewport control driver unit.

[0166] The embodiments relating to the encoding aspects may likewise be implemented in an apparatus comprising at least one processor and at least one memory, said at least one memory stored with computer program code thereon, the at least one memory and the computer program code configured to, with the at least one processor, cause the apparatus at least to perform: obtain image data from one or more image sensors; receive a signalling regarding parameters of a viewport to be used in rendering the 360-degree video stream; stitch and crop the image data from the one or more image sensors into a 360-degree video stream having the viewport according to the signalling; and transmit the cropped 360-degree video stream corresponding to the viewport.

[0167] According to an embodiment, the computer program code causing to receive the signalling regarding parameters of the viewport comprise a viewport control unit.

[0168] According to an embodiment, the computer program code causing to crop the 360- degree video stream into the viewport according to the signalling comprise the viewport control unit or a viewport control driver unit.

[0169] According to an embodiment, the computer program code causing to stitch the image data from the one or more image sensors into a 360-degree video stream and the computer program code causing to crop the 360-degree video stream having the viewport according to the signalling are separate computer program code sections, wherein said stitching is carried out prior to the cropping.

[0170] According to an embodiment, the apparatus comprises computer program code causing the apparatus to adjust, based on the signalling, the number of image sensors or lenses, from which the cropped 360-degree video stream is stitched.

[0171] According to an embodiment, the apparatus comprises computer program code causing the apparatus to align a center or origin points of the viewport and the stitched 360 video stream.

[0172] According to an embodiment, the apparatus comprises computer program code causing the apparatus to rotate the stitched 360-degree video stream according to the signalling.

[0173] According to an embodiment, the apparatus comprises computer program code causing the apparatus to encode the cropped 360-degree video stream prior to transmission.

[0174] According to an embodiment, the apparatus comprises computer program code causing the apparatus to store the stitched 360-degree video stream in a buffer memory; and fetch the stitched 360-degree video stream from the buffer memory for cropping.

[0175] Such apparatuses may comprise e.g. the functional units disclosed in any of the Figures 1, 2, 3a, 3b, 4, and 8 - 1 Ifor implementing the embodiments.

[0176] Figure 12 is a graphical representation of an example multimedia communication system within which various embodiments may be implemented. A data source 1510 provides a source signal in an analog, uncompressed digital, or compressed digital format, or any combination of these formats. An encoder 1520 may include or be connected with a preprocessing, such as data format conversion and / or filtering of the source signal. The encoder 1520 encodes the source signal into a coded media bitstream. It should be noted that a bitstream to be decoded may be received directly or indirectly from a remote device located within virtually any type of network. Additionally, the bitstream may be received from local hardware or software. The encoder 1520 may be capable of encoding more than one media type, such as audio and video, or more than one encoder 1520 may be required to code different media types of the source signal. The encoder 1520 may also get synthetically produced input, such as graphics and text, or it may be capable of producing coded bitstreams of synthetic media. In the following, only processing of one coded media bitstream of one media type is considered to simplify the description. It should be noted, however, that typically real-time broadcast services comprise several streams (typically at least one audio, video and text sub-titling stream). It should also be noted that the system may include many encoders, but in the figure only one encoder 1520 is represented to simplify the description without a lack of generality. It should be further understood that, although text and examples contained herein may specifically describe an encoding process, one skilled in the art would understand that the same concepts and principles also apply to the corresponding decoding process and vice versa.

[0177] The coded media bitstream may be transferred to a storage 1530. The storage 1530 may comprise any type of mass memory to store the coded media bitstream. The format of thecoded media bitstream in the storage 1530 may be an elementary self-contained bitstream format, or one or more coded media bitstreams may be encapsulated into a container file, or the coded media bitstream may be encapsulated into a Segment format suitable for DASH (or a similar streaming system) and stored as a sequence of Segments. If one or more media bitstreams are encapsulated in a container file, a file generator (not shown in the figure) may be used to store the one more media bitstreams in the file and create file format metadata, which may also be stored in the file. The encoder 1520 or the storage 1530 may comprise the file generator, or the file generator is operationally attached to either the encoder 1520 or the storage 1530. Some systems operate “live”, i.e. omit storage and transfer coded media bitstream from the encoder 1520 directly to the sender 1540. The coded media bitstream may then be transferred to the sender 1540, also referred to as the server, on a need basis. The format used in the transmission may be an elementary self-contained bitstream format, a packet stream format, a Segment format suitable for DASH (or a similar streaming system), or one or more coded media bitstreams may be encapsulated into a container file. The encoder 1520, the storage 1530, and the server 1540 may reside in the same physical device or they may be included in separate devices. The encoder 1520 and server 1540 may operate with live real-time content, in which case the coded media bitstream is typically not stored permanently, but rather buffered for small periods of time in the content encoder 1520 and / or in the server 1540 to smooth out variations in processing delay, transfer delay, and coded media bitrate.

[0178] The server 1540 sends the coded media bitstream using a communication protocol stack. The stack may include but is not limited to one or more of Real-Time Transport Protocol (RTP), User Datagram Protocol (UDP), Hypertext Transfer Protocol (HTTP), Transmission Control Protocol (TCP), and Internet Protocol (IP). When the communication protocol stack is packet-oriented, the server 1540 encapsulates the coded media bitstream into packets. For example, when RTP is used, the server 1540 encapsulates the coded media bitstream into RTP packets according to an RTP payload format. Typically, each media type has a dedicated RTP payload format. It should be again noted that a system may contain more than one server 1540, but for the sake of simplicity, the following description only considers one server 1540.

[0179] If the media content is encapsulated in a container file for the storage 1530 or for inputting the data to the sender 1540, the sender 1540 may comprise or be operationally attached to a "sending file parser" (not shown in the figure). In particular, if the container file is nottransmitted as such but at least one of the contained coded media bitstream is encapsulated for transport over a communication protocol, a sending file parser locates appropriate parts of the coded media bitstream to be conveyed over the communication protocol. The sending file parser may also help in creating the correct format for the communication protocol, such as packet headers and payloads. The multimedia container file may contain encapsulation instructions, such as hint tracks in the ISOBMFF, for encapsulation of the at least one of the contained media bitstream on the communication protocol.

[0180] The server 1540 may or may not be connected to a gateway 1550 through a communication network, which may e.g. be a combination of a CDN, the Internet and / or one or more access networks. The gateway may also or alternatively be referred to as a middle-box. For DASH, the gateway may be an edge server (of a CDN) or a web proxy. It is noted that the system may generally comprise any number gateways or alike, but for the sake of simplicity, the following description only considers one gateway 1550. The gateway 1550 may perform different types of functions, such as translation of a packet stream according to one communication protocol stack to another communication protocol stack, merging and forking of data streams, and manipulation of data stream according to the downlink and / or receiver capabilities, such as controlling the bit rate of the forwarded stream according to prevailing downlink network conditions. The gateway 1550 may be a server entity in various embodiments.

[0181] The system includes one or more receivers 1560, typically capable of receiving, demodulating, and de-capsulating the transmitted signal into a coded media bitstream. The coded media bitstream may be transferred to a recording storage 1570. The recording storage 1570 may comprise any type of mass memory to store the coded media bitstream. The recording storage 1570 may alternatively or additively comprise computation memory, such as random access memory. The format of the coded media bitstream in the recording storage 1570 may be an elementary self-contained bitstream format, or one or more coded media bitstreams may be encapsulated into a container file. If there are multiple coded media bitstreams, such as an audio stream and a video stream, associated with each other, a container file is typically used and the receiver 1560 comprises or is attached to a container file generator producing a container file from input streams. Some systems operate “live,” i.e. omit the recording storage 1570 and transfer coded media bitstream from the receiver 1560 directly to the decoder 1580. In some systems, only the most recent part of the recorded stream, e.g., the most recent 10-minuteexcerption of the recorded stream, is maintained in the recording storage 1570, while any earlier recorded data is discarded from the recording storage 1570.

[0182] The coded media bitstream may be transferred from the recording storage 1570 to the decoder 1580. If there are many coded media bitstreams, such as an audio stream and a video stream, associated with each other and encapsulated into a container file or a single media bitstream is encapsulated in a container file e.g. for easier access, a file parser (not shown in the figure) is used to decapsulate each coded media bitstream from the container file. The recording storage 1570 or a decoder 1580 may comprise the file parser, or the file parser is attached to either recording storage 1570 or the decoder 1580. It should also be noted that the system may include many decoders, but here only one decoder 1580 is discussed to simplify the description without a lack of generality

[0183] The coded media bitstream may be processed further by a decoder 1580, whose output is one or more uncompressed media streams. Finally, a Tenderer 1590 may reproduce the uncompressed media streams with a loudspeaker or a display, for example. The receiver 1560, recording storage 1570, decoder 1570, and tenderer 1590 may reside in the same physical device or they may be included in separate devices.

[0184] A sender 1540 and / or a gateway 1550 may be configured to perform switching between different representations e.g. for switching between different viewports of 360-degree video content, view switching, bitrate adaptation and / or fast start-up, and / or a sender 1540 and / or a gateway 1550 may be configured to select the transmitted representation(s). Switching between different representations may take place for multiple reasons, such as to respond to requests of the receiver 1560 or prevailing conditions, such as throughput, of the network over which the bitstream is conveyed. In other words, the receiver 1560 may initiate switching between representations. A request from the receiver can be, e.g., a request for a Segment or a Subsegment from a different representation than earlier, a request for a change of transmitted scalability layers and / or sub-layers, or a change of a rendering device having different capabilities compared to the previous one. A request for a Segment may be an HTTP GET request. A request for a Subsegment may be an HTTP GET request with a byte range.Additionally or alternatively, bitrate adjustment or bitrate adaptation may be used for example for providing so-called fast start-up in streaming services, where the bitrate of the transmitted stream is lower than the channel bitrate after starting or random-accessing the streaming in orderto start playback immediately and to achieve a buffer occupancy level that tolerates occasional packet delays and / or retransmissions. Bitrate adaptation may include multiple representation or layer up-switching and representation or layer down-switching operations taking place in various orders.

[0185] A decoder 1580 may be configured to perform switching between different representations e.g. for switching between different viewports of 360-degree video content, view switching, bitrate adaptation and / or fast start-up, and / or a decoder 1580 may be configured to select the transmitted representation(s). Switching between different representations may take place for multiple reasons, such as to achieve faster decoding operation or to adapt the transmitted bitstream, e.g. in terms of bitrate, to prevailing conditions, such as throughput, of the network over which the bitstream is conveyed. Faster decoding operation might be needed for example if the device including the decoder 1580 is multi-tasking and uses computing resources for other purposes than decoding the video bitstream. In another example, faster decoding operation might be needed when content is played back at a faster pace than the normal playback speed, e.g. twice or three times faster than conventional real-time playback rate.

[0186] In the above, where the example embodiments have been described with reference to an encoder, it needs to be understood that the resulting bitstream and the decoder may have corresponding elements in them. Likewise, where the example embodiments have been described with reference to a decoder, it needs to be understood that the encoder may have structure and / or computer program for generating the bitstream to be decoded by the decoder.

[0187] The embodiments of the invention described above describe the codec in terms of separate encoder and decoder apparatus in order to assist the understanding of the processes involved. However, it would be appreciated that the apparatus, structures and operations may be implemented as a single encoder-decoder apparatus / structure / operation. Furthermore, it is possible that the coder and decoder may share some or all common elements.

[0188] Although the above examples describe embodiments of the invention operating within a codec within an electronic device, it would be appreciated that the invention as defined in the claims may be implemented as part of any video codec. Thus, for example, embodiments of the invention may be implemented in a video codec which may implement video coding over fixed or wired communication paths.

[0189] Thus, user equipment may comprise a video codec such as those described in embodiments of the invention above. It shall be appreciated that the term user equipment is intended to cover any suitable type of wireless user equipment, such as mobile telephones, portable data processing devices or portable web browsers.

[0190] Furthermore elements of a public land mobile network (PLMN) may also comprise video codecs as described above.

[0191] In general, the various embodiments of the invention may be implemented in hardware or special purpose circuits, software, logic or any combination thereof. For example, some aspects may be implemented in hardware, while other aspects may be implemented in firmware or software which may be executed by a controller, microprocessor or other computing device, although the invention is not limited thereto. While various aspects of the invention may be illustrated and described as block diagrams, flow charts, or using some other pictorial representation, it is well understood that these blocks, apparatus, systems, techniques or methods described herein may be implemented in, as non-limiting examples, hardware, software, firmware, special purpose circuits or logic, general purpose hardware or controller or other computing devices, or some combination thereof.

[0192] The embodiments of this invention may be implemented by computer software executable by a data processor of the mobile device, such as in the processor entity, or by hardware, or by a combination of software and hardware. Further in this regard it should be noted that any blocks of the logic flow as in the Figures may represent program steps, or interconnected logic circuits, blocks and functions, or a combination of program steps and logic circuits, blocks and functions. The software may be stored on such physical media as memory chips, or memory blocks implemented within the processor, magnetic media such as hard disk or floppy disks, and optical media such as for example DVD and the data variants thereof, CD.

[0193] The memory may be of any type suitable to the local technical environment and may be implemented using any suitable data storage technology, such as semiconductor-based memory devices, magnetic memory devices and systems, optical memory devices and systems, fixed memory and removable memory. The data processors may be of any type suitable to the local technical environment, and may include one or more of general purpose computers, special purpose computers, microprocessors, digital signal processors (DSPs) and processors based on multi-core processor architecture, as non-limiting examples.

[0194] Embodiments of the inventions may be practiced in various components such as integrated circuit modules. The design of integrated circuits is by and large a highly automated process. Complex and powerful software tools are available for converting a logic level design into a semiconductor circuit design ready to be etched and formed on a semiconductor substrate.

[0195] Programs, such as those provided by Synopsys, Inc. of Mountain View, California and Cadence Design, of San Jose, California automatically route conductors and locate components on a semiconductor chip using well established rules of design as well as libraries of pre-stored design modules. Once the design for a semiconductor circuit has been completed, the resultant design, in a standardized electronic format (e.g., Opus, GDSII, or the like) may be transmitted to a semiconductor fabrication facility or "fab" for fabrication.

[0196] The foregoing description has provided by way of exemplary and non-limiting examples a full and informative description of the exemplary embodiment of this invention. However, various modifications and adaptations may become apparent to those skilled in the relevant arts in view of the foregoing description, when read in conjunction with the accompanying drawings and the appended claims. However, all such and similar modifications of the teachings of this invention will still fall within the scope of this invention.

Claims

CLAIMS:

1. An apparatus comprising: means for obtaining image data from one or more image sensors; means for receiving a signalling regarding parameters of a viewport to be used in rendering the 360-degree video stream; means for stitching and cropping the image data from the one or more image sensors into a 360-degree video stream having the viewport according to the signalling; and means for transmitting the cropped 360-degree video stream corresponding to the viewport.

2. The apparatus according to claim 1, wherein said means for receiving the signalling regarding parameters of the viewport comprise a viewport control unit.

3. The apparatus according to claim 2, wherein said means for cropping the 360-degree video stream into the viewport according to the signalling comprise the viewport control unit or a viewport control driver unit.

4. The apparatus according to any preceding claim, wherein said means for stitching the image data from the one or more image sensors into a 360-degree video stream and cropping the 360- degree video stream having the viewport according to the signalling are separate means, wherein said stitching is carried out prior to the cropping.

5. The apparatus according to any preceding claim, comprising: means for adjusting, based on the signalling, the number of image sensors or lenses, from which the cropped 360-degree video stream is stitched.

6. The apparatus according to any preceding claim, comprising: means for aligning a center or origin points of the viewport and the stitched 360 video stream.

7. The apparatus according to any preceding claim, comprising: means for rotating the stitched 360-degree video stream according to the signalling.

8. The apparatus according to any preceding claim, comprising: means for encoding the cropped 360-degree video stream prior to transmission.

9. The apparatus according to any preceding claim, comprising: means for storing the stitched 360-degree video stream in a buffer memory; and means for fetching the stitched 360-degree video stream from the buffer memory for cropping.

10. The apparatus according to any of claims 4 - 9, wherein said means comprise the viewport control driver unit.

11. A method comprising: obtaining image data from one or more image sensors or lenses; receiving a signalling regarding parameters of a viewport to be used in rendering the 360-degree video stream; stitching and cropping the image data from the one or more image sensors into a 360- degree video stream having the viewport according to the signalling; and transmitting the cropped 360-degree video stream corresponding to the viewport.

12. The method according to claim 11, wherein said receiving the signalling regarding parameters of the viewport is carried out by a viewport control unit.

13. The method according to claim 12, wherein said cropping the 360-degree video stream into the viewport according to the signalling is carried out by the viewport control unit or a viewport control driver unit.

14. The method according to any of claims 11 -13, wherein said stitching the image data from the one or more image sensors into a 360-degree video stream is carried out prior to the cropping the 360-degree video stream having the viewport according to the signalling.

15. The method according to any of claims 11 - 14, comprising: aligning, by the viewport control driver unit, a center or origin points of the viewport and the stitched 360 video stream.

16. The method according to any of claims 11 - 15, comprising: rotating, by the viewport control driver unit, the stitched 360-degree video stream according to the signalling.

17. An apparatus comprising at least one processor and at least one memory, said at least one memory stored with computer program code thereon, the at least one memory and the computer program code configured to, with the at least one processor, cause the apparatus at least to perform: obtain image data from one or more image sensors; receive a signalling regarding parameters of a viewport to be used in rendering the 360-degree video stream; stitch and crop the image data from the one or more image sensors into a 360-degree video stream having the viewport according to the signalling; and transmit the cropped 360-degree video stream corresponding to the viewport.

18. The apparatus according to claim 17, wherein the computer program code causing to receive the signalling regarding parameters of the viewport comprises a viewport control unit.

19. The apparatus according to claim 18, wherein the computer program code causing to crop the 360-degree video stream into the viewport according to the signalling comprises the viewport control unit or a viewport control driver unit.

20. The apparatus according to any of claims 17 - 19, wherein the computer program code causing to stitch the image data from the one or more image sensors into a 360-degree video stream and the computer program code causing to crop the 360-degree video stream having the viewport according to the signalling are separate computer program code sections, wherein said stitching is carried out prior to the cropping.

21. The apparatus according to any of claims 17 - 20, comprising computer program code causing the apparatus to adjust, based on the signalling, the number of image sensors or lenses, from which the cropped 360-degree video stream is stitched.

22. The apparatus according to any of claims 17 - 21, comprising computer program code causing the apparatus to align a center or origin points of the viewport and the stitched 360 video stream.

23. The apparatus according to any of claims 17 - 22, comprising computer program code causing the apparatus to rotate the stitched 360-degree video stream according to the signalling.

24. The apparatus according to any of claims 17 - 23, comprising computer program code causing the apparatus to encode the cropped 360-degree video stream prior to transmission.

25. The apparatus according to any of claims 17 - 24, comprising computer program code causing the apparatus to store the stitched 360-degree video stream in a buffer memory; and fetch the stitched 360-degree video stream from the buffer memory for cropping.

Citation Information

Patent Citations

  • Adjustable variable resolution inspection systems and methods

    US20170023492A1

  • Viewport Dependent Delivery Methods For Omnidirectional Conversational Video

    US20220021864A1

  • Method, an apparatus and a computer program product for video conferencing

    US20230033063A1