Patent Description:
The present document relates generally to images. More particularly, an embodiment of the present invention relates to a shutter angle flag indicating whether shutter angle information is fixed for all temporal sub-layers in the sequence of video pictures.

As used herein, the term 'dynamic range' (DR) may relate to a capability of the human visual system (HVS) to perceive a range of intensity (e.g., luminance, luma) in an image, e.g., from darkest grays (blacks) to brightest whites (highlights). In this sense, DR relates to a 'scene-referred' intensity. DR may also relate to the ability of a display device to adequately or approximately render an intensity range of a particular breadth. In this sense, DR relates to a 'display-referred' intensity. Unless a particular sense is explicitly specified to have particular significance at any point in the description herein, it should be inferred that the term may be used in either sense, e.g. interchangeably.

As used herein, the term high dynamic range (HDR) relates to a DR breadth that spans the <NUM>-<NUM> orders of magnitude of the human visual system (HVS). In practice, the DR over which a human may simultaneously perceive an extensive breadth in intensity range may be somewhat truncated, in relation to HDR.

In practice, images comprise one or more color components (e.g., luma Y and chroma Cb and Cr) wherein each color component is represented by a precision of n-bits per pixel (e.g., n=<NUM>). Using linear luminance coding, images where n ≤ <NUM> (e.g., color <NUM>-bit JPEG images) are considered images of standard dynamic range (SDR), while images where n > <NUM> may be considered images of enhanced dynamic range. HDR images may also be stored and distributed using high-precision (e.g., <NUM>-bit) floating-point formats, such as the OpenEXR file format developed by Industrial Light and Magic.

Currently, distribution of video high dynamic range content, such as Dolby Vision from Dolby laboratories or HDR10 in Blue-Ray, is limited to <NUM> resolution (e.g., <NUM> x <NUM> or <NUM> x <NUM>, and the like) and <NUM> frames per second (fps) by the capabilities of many playback devices. In future versions, it is anticipated that content of up to <NUM> resolution (e.g., <NUM> x <NUM>) and <NUM> fps may be available for distribution and playback. It is desirable that future content types will be compatible with existing playback devices in order to simplify an HDR playback content ecosystem, such as Dolby Vision. Ideally, content producers should be able to adopt and distribute future HDR technologies without having to also derive and distribute special versions of the content that are compatible with existing HDR devices (such as HDR10 or Dolby Vision). As appreciated by the inventors here, improved techniques for the scalable distribution of video content, especially HDR content, are desired.

<CIT> describes transmitting moving image data at a high frame rate in good condition, wherein second moving image data at a predetermined frame rate is provided by processing first moving image data at the predetermined frame rate in units of consecutive N pictures (N is an integer larger than or equal to two), using an image data item provided by averaging the image data items of the N pictures as the image data item of the first picture, and using the image data items of the second to Nth pictures of the N pictures as the image data items of the second to Nth pictures. A video stream is generated by encoding the image data item of each picture in the second moving image data and the generated video stream is transmitted. This document also discloses a one-bit field of a "Shutter_speed_information_descriptor" indicating whether the capturing speed information SEI is encoded in the video stream; the video stream may be layered.

An embodiment of the present invention is illustrated by way of example, and not in way by limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:.

Example embodiments that relate to frame-rate scalability for video coding are described herein. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the various embodiments of present invention. It will be apparent, however, that the various embodiments of the present invention may be practiced without these specific details. In other instances, well-known structures and devices are not described in exhaustive detail, in order to avoid unnecessarily occluding, obscuring, or obfuscating embodiments of the present invention.

The invention is defined by the appended claims and is described in the section entitled "Alternative signalling of shutter angle information".

In an embodiment according to the claimed invention, an apparatus according to independent claim <NUM> is disclosed.

The other embodiments and examples are provided for illustrative purposes and do not represent embodiments of the invention except when combined with all the features respectively defined in the independent claim.

<FIG> depicts an example process of a conventional video delivery pipeline (<NUM>) showing various stages from video capture to video content display. A sequence of video frames (<NUM>) is captured or generated using image generation block (<NUM>). Video frames (<NUM>) may be digitally captured (e.g. by a digital camera) or generated by a computer (e.g. using computer animation) to provide video data (<NUM>). Alternatively, video frames (<NUM>) may be captured on film by a film camera. The film is converted to a digital format to provide video data (<NUM>). In a production phase (<NUM>), video data (<NUM>) is edited to provide a video production stream (<NUM>).

The video data of production stream (<NUM>) is then provided to a processor at block (<NUM>) for post-production editing. Block (<NUM>) post-production editing may include adjusting or modifying colors or brightness in particular areas of an image to enhance the image quality or achieve a particular appearance for the image in accordance with the video creator's creative intent. This is sometimes called "color timing" or "color grading. " Other editing (e.g. scene selection and sequencing, image cropping, addition of computer-generated visual special effects, judder or blur control, frame rate control, etc.) may be performed at block (<NUM>) to yield a final version (<NUM>) of the production for distribution. During post-production editing (<NUM>), video images are viewed on a reference display (<NUM>). Following post-production (<NUM>), video data of final production (<NUM>) may be delivered to encoding block (<NUM>) for delivering downstream to decoding and playback devices such as television sets, set-top boxes, movie theaters, and the like. In some embodiments, coding block (<NUM>) may include audio and video encoders, such as those defined by ATSC, DVB, DVD, Blu-Ray, and other delivery formats, to generate coded bit stream (<NUM>). In a receiver, the coded bit stream (<NUM>) is decoded by decoding unit (<NUM>) to generate a decoded signal (<NUM>) representing an identical or close approximation of signal (<NUM>). The receiver may be attached to a target display (<NUM>) which may have completely different characteristics than the reference display (<NUM>). In that case, a display management block (<NUM>) may be used to map the dynamic range of decoded signal (<NUM>) to the characteristics of the target display (<NUM>) by generating display-mapped signal (<NUM>).

Scalable coding is already part of a number of video coding standards, such as, MPEG-<NUM>, AVC, and HEVC. In embodiments of this invention, scalable coding is extended to improve performance and flexibility, especially as it relates to very high resolution HDR content.

As used herein, the term "shutter angle" denotes an adjustable shutter setting which controls the proportion of time that film is exposed to light during each frame interval. For example, in an embodiment <MAT>.

The term comes from legacy, mechanical, rotary shutters; however, modern digital cameras can also adjust their shutter electronically. Cinematographers may use the shutter angle to control the amount of motion blur or judder that is recorded in each frame. Note that instead of using "exposure time" one may also use alternative terms, like "exposure duration, " "shutter interval," and "shutter speed. " Similarly, instead of using "frame interval" one may use the term "frame duration. " Alternatively, one may replace "frame interval" with "<NUM>/frame rate. " The value of exposure time is typically less than or equal to the duration of a frame. For example, a shutter angle of <NUM> degrees indicates that the exposure time is half of the frame duration. In some situations, exposure time may be greater than the frame duration of coded video, for example, when the encoded frame rate is <NUM> fps and the frame rate of the associated video content prior to encoding and display is <NUM> fps.

Consider, without limitation, an embodiment where original content is shot (or generated) at an original frame rate (e.g., <NUM> fps) with a shutter angle of <NUM> degrees. Then, in a receiving device, one can render video output at a variety of frame rates equal to or lower than the original frame rate by judicial combination of the original frames, e.g., by averaging or other known in the art operations.

The combining process may be performed with non-linear encoded signals, (e.g., using gamma, PQ or HLG), but best image quality is obtained by combining frames in the linear light domain by first, converting the non-linear encoded signals into linear-light representations, next, combining the converted frames, and finally re-encoding the output with the non-linear transfer function. This process provides a more accurate simulation of a physical camera exposure than combining in the non-linear domain.

In general terms, the process of combining frames can be express in terms of the original frame rate, the target frame rate, the target shutter angle, and the number of frames to be combined as: <MAT> which is equivalent to <MAT> where n_frames is the number of combined frames, original_frame_rate is the frame rate of the original content, target_frame_rate is the frame rate to be rendered (where, target_frame_rate ≤ original_frame_rate), and target_shutter_angle indicates the amount of desired motion blur. In this example, the maximum value of target_shutter_angle is <NUM> degrees and corresponds to the maximal motion blur. The minimum value of target_shutter_angle can be expressed as <NUM> *(target_frame_rate/original_frame_rate) and corresponds to minimal motion blur. The maximum value of n_frames can be expressed as (original frame_rate/target frame_rate). The values of target_frame_rate and target_shutter_angle should be selected such that the value of n_frames is a non-zero integer.

In the special case that the original frame rate is <NUM> fps, equation (<NUM>) can be rewritten as <MAT> which is equivalent to <MAT> The relationships between the values of target_frame_rate, n_frames, and target_shutter_angle are shown in Table <NUM> for the case of original_frame_rate = <NUM> fps. In Table <NUM>, "NA" indicates that the corresponding combination of a target frame rate and the number of combined frames is not allowed.

<FIG> depicts an example process of combining consecutive original frames to render a target frame rate at a target shutter angle according to an embodiment. Given an input sequence (<NUM>) at <NUM> fps and a shutter angle of <NUM> degrees, the process generates an output video sequence (<NUM>) at <NUM> fps and a shutter angle of <NUM> degrees by combining three of the input frames in a set of five consecutive frames (e.g., the first three consecutive frames), and dropping the other two. Note that in some embodiments, output frame-<NUM> of (<NUM>) may be generated by combining alternative input frames (<NUM>), such as frames <NUM>, <NUM>, and <NUM>, or frames <NUM>,<NUM>, and <NUM>, and the like; however, it is expected that combining consecutive frames will yield video output of better quality.

It is desirable to support original content with variable frame rate, for example, to manage artistic and stylistic effect. It is also desirable that the variable input frame rate of the original content is packaged in a "container" that has a fixed frame rate to simplify content production, exchange, and distribution. As an example, three embodiments on how to represent the variable frame rate video data in a fixed frame rate container are presented. For purposes of clarity and without limitation, the following descriptions use fixed <NUM> fps container, but the approaches can easily be extended to an alternative frame rate container.

The first embodiment is an explicit description of original content having variable (non-constant) frame rate packaged in a container having constant frame rate. For example, original content that has different frames rate, say, at <NUM>, <NUM>, <NUM>, <NUM>, or <NUM> fps, for different scenes, may be packaged in a container having a constant frame rate of <NUM> fps. For this example, each input frame can be duplicated either 5x, 4x, 3x, 2x, or 1x times to package it into a common <NUM> fps container.

<FIG> depicts an example of an input video sequence A with variable frame rate and variable shutter angle which is represented in a coded bitstream B with a fixed frame rate. Then, in a decoder, the decoder reconstructs output video sequence C at the desired frame rate and shutter angle, which may change from scene to scene. For example, as depicted in <FIG>, to construct sequence B, some of the input frames are duplicated, some are coded as is (with no duplication), and some are copied four times. Then, to construct sequence C, any one frame from each set of duplicate frames is selected to generate output frames, matching the original frame rate and shutter angle.

In this embodiment, metadata is inserted in the bitstream to indicate the original (base) frame rate and shutter angle. The metadata may be signaled using high level syntax such as a Sequence Parameter Set (SPS), a Picture Parameter Set (PPS), a Slice or Tile Group header, and the like. The presence of metadata enables encoders and decoders to perform beneficial functions, such as:.

This embodiment enables an end user to view rendered content at the frame rates intended by the content creators. This embodiment does not provide for backwards compatibility with devices that do not support the frame rate of the container, e.g., <NUM> fps.

Tables <NUM> and <NUM> depict example syntax of raw byte sequence payload (RBSB) for a sequence parameter set and Tile Group header, where the proposed new syntax elements are depicted in an italic font. The remaining syntax follows the syntax in the proposed specification of the Versatile Video Codec (WC) (Ref. [<NUM>]).

As an example, in SPS (see Table <NUM>), one may add a flag to enable variable frame rate. sps_vfr_enabled_flag equal to <NUM> specifies that the coded video sequence (CVS) may contain variable frame rate content. sps_vfr_enabled_flag equal to <NUM> specifies that the CVS contains fixed frame rate content.

In the tile_group header() (see Table <NUM>),.

The second embodiment enables the use case in which original content having a fixed frame rate and shutter angle may be rendered by a decoder at an alternative frame rate and variable simulated shutter angle, such as illustrated in <FIG>. For example, in the case that original content has a frame rate of <NUM> fps and a shutter angle of <NUM> degrees (meaning the shutter is open <NUM>/<NUM> second), a decoder can render out multiple frame rates that are less than or equal to <NUM> fps. For example, as described in Table <NUM>, to decode <NUM> fps with a <NUM>-degrees simulated shutter angle, the decoder may combine three decoded frames and display at <NUM> fps. Table <NUM> expands upon Table <NUM> and illustrates how to combine different numbers of encoded frames to render at the output target frame rates and the desired target shutter angles. Combining the frames may be performed by simple pixel averaging, by weighted pixel averaging, where pixels from a certain frame may be weighted more than pixels of other frames and the sum of all weights sums to one, or by other filter interpolation schemes known in the art. In Table <NUM>, the function Ce(a,b) denotes the combination of encoded frames a to b, where the combining can be performed by averaging, weighted averaging, filtering, and the like.

When the value of the target shutter angle is less than <NUM> degrees, the decoder can combine different sets of decoded frames. For example, from Table <NUM>, given an original stream of <NUM> fps @ <NUM>-degrees, to generate a stream at <NUM> fps and a <NUM>-degrees shutter angle, a decoder needs to combine two frames out of three possible frames. Thus, it may combine either the first and the second frames or the second and the third frames. The choice of which frames to combine may be described in terms of a "decoding phase" expressed as: <MAT> where decode_phase_idx indicates the offset index within a set of sequential frames having index values in [<NUM>, n frames_max-<NUM>], where n_frames is given by equation (<NUM>), and <MAT>.

In general, decode_phase_idx ranges from [<NUM>, n_frames_max-n_frames]. For example, for an original sequence at <NUM> fps and a <NUM> degrees shutter angle, for the target frame rate of <NUM> fps at a <NUM> degrees shutter angle, n_frames_max = <NUM>/<NUM> = <NUM>. From equation (<NUM>), n_frames = <NUM>, thus decode_phase_idx ranges from [<NUM>, <NUM>]. Thus, decode_phase_idx = <NUM> indicates selecting frames with index <NUM> and <NUM>, and decode_phase_idx = <NUM> indicates selecting frames with index <NUM> and <NUM>.

In this embodiment, the rendered variable frame rate intended by the content creator may be signaled as metadata, such as a supplemental enhancement information (SEI) message or as video usability information (VUI). Optionally, the rendered frame rate may be controlled by the receiver or a user. An example of frame rate conversion SEI messaging that specifies the preferred frame rate and shutter angle of the content creator is shown in Table <NUM>. The SEI message can also indicate if combining frames is performed in the coded signal domain (e.g., gamma, PQ, etc.) or the linear light domain. Note that postprocessing requires a frame buffer in addition to the decoder picture buffer (DPB). The SEI message may indicate how many extra frame buffers are needed, or some alternative method for combining frames. For example, to reduce complexity, frames may be recombined at reduced spatial resolution.

As depicted in Table <NUM>, at certain combinations of frame rates and shutter angles (e.g., at <NUM> fps and <NUM> degrees or at <NUM> fps and <NUM> or <NUM> degrees) a decoder may need to combine more than three decoded frames, which increases the number of buffer space required by the decoder. To reduce the burden of extra buffer space in the decoder, in some embodiments, certain combinations of frame rates and shutter angles may be off limits to the set of allowed decoding parameters (e.g., by setting appropriate coding Profiles and Levels).

Considering again, as an example, the case of playback at <NUM> fps, a decoder may decide to display the same frame five times to be displayed at <NUM> fps output frame rate. This is exactly the same as showing the frame a single time at <NUM> fps output frame rate. The advantage of keeping a constant output frame rate is that a display can run at a constant clock speed, which makes all the hardware much simpler. If the display can dynamically vary the clock speed then it may make more sense to only show the frame once (for <NUM>/<NUM>th of a second), instead of repeating the same frame five times (each <NUM>/<NUM>th of a second). The former approach may result in slightly higher picture quality, better optical efficiency, or better power efficiency. Similar considerations are also applicable to other frame rates.

Table <NUM> depicts an example of a frame rate conversion SEI messaging syntax according to an embodiment.

A third embodiment is a coding scheme that allows the extraction of sub-frame rates from the bitstream, thus supporting backward compatibility. In HEVC, this is achieved by temporal scalability. Temporal-layer scalability is enabled by assigning different values to a temporal_id syntax element for the decoded frames. The bitstream can thereby be extracted simply on the basis of temporal_id values. However, the HEVC-style approach to temporal scalability does not enable rendering output frame rates with different shutter angles. For example, a <NUM> fps base frame rate extracted from an <NUM> fps original will always have a shutter angle of <NUM> degrees.

In ATSC <NUM>, an alternative method is described in which frames at <NUM> fps having a <NUM> degrees shutter angles are emulated as a weighted average of two <NUM> fps frames. The emulated <NUM> fps frames are assigned temporal_id value of <NUM> and are combined with alternating original <NUM> fps frames assigned temporal_id value <NUM>. When <NUM> fps is needed, the decoder only needs to decode frames with temporal_id <NUM>. When <NUM> fps is needed, the decoder may subtract each temporal_id = <NUM> frame (i.e., a <NUM> fps frame) from a scaled version of each corresponding temporal_id = <NUM> frame (i.e., emulated <NUM> fps frame) to recover the corresponding original <NUM> fps frame that was not transmitted explicitly, thereby reconstituting all the original <NUM> fps frames.

In embodiments of this invention, a new algorithm that supports multiple target frame rates and target shutter angles in a manner that is backward compatible (BC) is described. The proposal is to preprocess the original <NUM> fps content at a base frame rate at several shutter angles. Then, at the decoder, other frame rates at various other shutter angles can be simply derived. The ATSC <NUM> approach can be thought of as a special case of the proposed scheme, where frames with temporal_id=<NUM> carry frames at 60fps@<NUM> shutter angle and frames with temporal_id=<NUM> carry frames at 60fps@<NUM> shutter angle.

As a first example, as depicted in <FIG>, consider an input sequence at <NUM> fps and a <NUM> shutter angle that is used to encode a sequence with a base layer frame rate of <NUM> fps and shutter angles at <NUM>, <NUM>, and <NUM> degrees. In this scheme the encoder computes new frames by combining up to three of the original input frames. For example, encoded frame <NUM> (En-<NUM>) representing the input at <NUM> fps and <NUM> degrees is generated by combining input frames <NUM> and <NUM>, and encoded frame <NUM> (En-<NUM>) representing the input at <NUM> fps and <NUM> degrees is generated by combining frame En-<NUM> to input frame <NUM>. In the decoder, to reconstruct the input sequence, decoded frame <NUM> (Dec-<NUM>) is generated by subtracting frame En-<NUM> from frame En-<NUM>, and decoded frame <NUM> (Dec-<NUM>) is generated by subtracting frame En-<NUM> from frame En-<NUM>. The three decoded frames represent an output at base frame rate of <NUM> fps and shutter angle <NUM> degrees. Additional frame rates and shutter angles can be extrapolated using the decoded frames as depicted in Table <NUM>. In Table <NUM>, the function Cs(a,b) denotes the combination of input frames a to b, where the combining can be performed by averaging, weighted averaging, filtering, and the like.

An advantage of this approach is that, as depicted in Table <NUM>, all the <NUM> fps versions can be decoded without any further processing. Another advantage is that other frame rates can be derived at various shutter angles. For example, consider a decoder decoding at <NUM> fps and a shutter angle of <NUM>. From Table <NUM>, the output corresponds to the sequence of frames generated by Ce(<NUM>,<NUM>) = Cs(<NUM>,<NUM>), Cs(<NUM>,<NUM>), Cs(<NUM>,<NUM>), and the like, which matches the decoding sequence depicted in Table <NUM> as well; however, in Table <NUM>, Cs(<NUM>,<NUM>) = e6-e4+e8. In an embodiment, look-up tables (LUTs) can be used to define how the decoded frames need to be combined to generate an output sequence at the specified output frame rate and emulated shutter angle.

In another example, it is proposed to combine up to five frames in the encoder in order to simplify the extraction of the <NUM> fps base layer at shutter angles of <NUM>, <NUM>, <NUM>, <NUM>, and <NUM> degrees, as shown below. This is desirable for movie content that is best presented at 24fps on legacy televisions.

As depicted in Table <NUM>, if the decoding frame rate matches the baseline frame rate (<NUM> fps), then, in each group of five frames (e.g., e1 to e5) a decoder can simply select the one frame at the desired shutter angle (e.g., e2 for a shutter angle at <NUM> degrees). To decode at a different frame rate and a specific shutter angle, the decoder will need to determine how to properly combine (say, by addition or subtraction) the decoded frames. For example, to decode at <NUM> fps and a shutter angle of <NUM> degrees, the following steps may be followed:.

As before, the proper combination of decoded frames can be precomputed and be available as a LUT.

An advantage of the proposed method is that it provides options for both content creators and users; i.e., in enables directorial/editorial choice and user choice. For example, preprocessing content in the encoder allows for a base frame rate to be created with various shutter angles. Each shutter angle can be assigned a temporal_id value in the range [<NUM>, (n_frames -<NUM>)], where n_frames has a value equal to <NUM> divided by the base frame rate. (For example, for a base frame rate of <NUM> fps, temporal_id is in the range [<NUM>,<NUM>]. ) The choice may be made to optimize compression efficiency, or for aesthetic reasons. In some use cases, say, for over the top streaming, multiple bitstreams with different base layers can be encoded and stored and offered to users to select.

In a second example of the disclosed methods, multiple backward compatible frame rates may be supported. Ideally, one may want to be able to decode at <NUM> frames per second to get a <NUM> fps base layer, at <NUM> frames per second to get a <NUM> fps sequence, at <NUM> frames per second to get a <NUM> fps sequence, and the like. If a target shutter angle is not specified, a default target shutter angle, among those shutter angles permissible for the source and target frame rates, as close as possible to <NUM> degrees is recommended. For example, for the values depicted in Table <NUM>, preferred target shutter angles for fps at <NUM>, <NUM>, <NUM>, <NUM>, and <NUM> are <NUM>, <NUM>, <NUM>, <NUM>, and <NUM> degrees.

From the above examples it can be observed that the choice of how to encode the content can influence the complexity of decoding specific base layer frame rates. One embodiment of this invention is to adaptively choose the encoding scheme based on the desired base layer frame rate. For movie content this may be <NUM> fps, for example, while for sports it may be <NUM> fps.

Example syntax for the BC embodiment of the current invention is shown below and in Tables <NUM> and <NUM>. In SPS (Table <NUM>), two syntax elements are added: sps_hfr_BC_enabled_flag, and.

In tile group header, if sps _hfr_BC_enabled_flag is set to <NUM>, the syntax number_avg_frames is sent in the bitstream. number_avg_frames specifies the number of frames at the highest framerate (e.g., <NUM> fps) that are combined to generate the current picture at base framerate.

The HEVC (H. <NUM>) coding standard (Ref.[<NUM>]) and the under development Versatile Video Coding Standard (commonly referred to as WC, see Ref. [<NUM>]), define a syntax element, pic_struct, that indicates whether a picture should be displayed as a frame or as one or more fields, and whether a decoded picture should be repeated. A copy of Table D. <NUM>, "Interpretation of pic struct," from HEVC is provided for ease of reference in the Appendix.

It is important to note that, as appreciated by the inventors, the existing pic_struct syntax element can support only a specific subset of content frame rates when using a fixed frame rate coding container. For example, when using a fixed frame rate container of <NUM> fps, the existing pic_struct syntax, when fixed_pic_rate_within_cvs_flag is equal to <NUM>, can support <NUM> fps by using frame doubling, and <NUM> fps by using frame doubling and frame tripling in alternating combination on every other frame. However, when using a fixed frame rate container of <NUM> fps, the current pic_struct syntax cannot support frame rates of <NUM> fps nor <NUM> fps. To alleviate this problem, two new methods are proposed: one is an extension of the HEVC version, and the other is not.

VVC is still under development, thus one can design syntax with maximal freedom. In an embodiment, in pic struct, it is proposed to remove the options for frame doubling and frame tripling, use a specific value of pic_struct to indicate arbitrary frame repetition, and add a new syntax element, num_frame_repetition_minus2, that specifies the number of frames to repeat. An example of the proposed syntax is described in the following Tables, where Table <NUM> denotes changes over Table D. <NUM> in HEVC and Table <NUM> denotes changes of Table D. <NUM> shown in the Appendix.

AVC and HEVC decoders are already deployed, thus it may be desired to simply extend the existing pic _struct syntax without removing old options. In an embodiment, a new pic_struct = <NUM>, "frame repetition extension" value, and a new syntax element, num_frame_repetition_minus4, are added. An example of the proposed syntax is described in Tables <NUM> and <NUM>. For pic_struct values <NUM>-<NUM>, the proposed syntax is identical with the one in Table D. <NUM> (as shown in the Appendix), thus those values are omitted for simplicity.

In HEVC, parameter frame_field_info_present_flag is present in the video usability information (VUI), but the syntax elements pic_struct, source_scan_type, and duplicate flag are in the pic_timing() SEI message. In an embodiment, it is proposed to move all related syntax elements to VUI, together with the frame_field_info_present_flag. An example of the proposed syntax is depicted in Table <NUM>.

When dealing with variable frame rate, it is desirable to identify both the desired frame rate and the desired shutter angle. In prior video coding standards, "Video Usability Information" (VUI) provides essential information for the proper display of video content, such as the aspect ratio, colour primaries, chroma sub-sampling, etc. VUI may also provide frame rate information if fixed pic rate is set to <NUM>; however, there is no support for shutter angle information. Embodiments allow for different shutter angles to be used for different temporal layers, and a decoder can use shutter angle information to improve the final look on the display.

For example, HEVC supports temporal sub layers that essentially use frame dropping techniques to go from a higher frame rate to lower frame rate. The major problem with this is that the effective shutter angle is reduced with each frame drop. As an example, <NUM> fps can be derived from a <NUM> fps video by dropping every other frame; <NUM> fps can be derived by dropping <NUM> out of <NUM> frames; and <NUM> fps can be derived by dropping <NUM> out of <NUM> frames. Assuming a full <NUM> degrees shutter for <NUM>, with simple frame dropping, the shutter angles for <NUM> fps, <NUM> fps, and <NUM> fps are <NUM>, <NUM>, and <NUM> degrees, respectively [<NUM>]. Experience has shown that shutter angles below <NUM> degrees are generally unacceptable, especially with frame rates below <NUM>. By providing shutter angle information, for example, if it is desired that a display produces a cinematic effect from a <NUM> video with reduced shutter angle for each temporal layer, smart techniques may be applied to improve the final look.

In another example, one may want to support a different temporal layer (say, a <NUM> fps sub-bitstream inside a <NUM> fps bitstream) with the same shutter angle. Then, the major problem is that when <NUM> fps video is displayed at <NUM>, the even/odd frames have different effective shutter angle. If a display has the related information, smart techniques can be applied to improve the final look. An example of the proposed syntax is shown in Table <NUM>, where the E. <NUM> VUI parameters syntax Table in HEVC (Ref. [<NUM>]) is modified to support shutter angle information as noted. Note that in another embodiment, instead of expressing shutter_angle syntax in absolute degrees, it can alternatively be expressed as ratio of frame rate over shutter speed (see equation (<NUM>)).

Experiments have shown that for HDR content displayed on an HDR display, to perceive the same motion juddering as standard dynamic range (SDR) playback in a <NUM> nits display, the frame rate needs to be increased based on the brightness of the content. In most standards (AVC, HEVC, WC, etc.), the video frame rate can be indicated in the VUI (contained in SPS) using the vui_time_scale, vui_num_units_in_tick and elemental_duration_in_tc_minus1[temporal_id_max] syntax elements, for example, as shown in Table <NUM> below (see Section E. <NUM> in Ref[<NUM>]).

As discussed in Ref. [<NUM>],
The variable ClockTick is derived as follows and is called a clock tick: <MAT> <MAT> <MAT>.

However, the frame rate can only be changed at specific time instants, for example, in HEVC, only at intra random access point (IRAP) frames or at the start of a new CVS. For HDR playback, when there is a fade-in or fade-out case, because the brightness of a picture is changing frame by frame, there might be a need to change frame rate or picture duration for every picture. To allow frame rate or picture duration refresh at any time instant (even on a frame-by-frame basis), in an embodiment, a new SEI message for "gradual refresh rate" is proposed, as shown in Table <NUM>.

The definition of new syntax num_units_in_tick is the same as vui_num_units_in_tick, and the definition of time_scale is the same as that of vui_time_scale.

The picture duration time for the picture which uses gradual_refresh_rate SEI message is defined as: <MAT>.

As discussed earlier, Table <NUM> provides an example of VUI parameter syntax with shutter angle support. As an example, and without limitation, Table <NUM> lists identical syntax elements, but now as part of an SEI message for shutter angle information. Note that SEI messaging is being used only as an example and similar messaging may be constructed at other layers of high-level syntax, such as the Sequence Parameter Set (SPS), the Picture Parameter Set (PPS), the Slice or Tile Group header, and the like.

Shutter angle is typically expressed in degrees from <NUM> to <NUM> degrees. For example, a shutter angle of <NUM> degrees indicates that the exposure duration is ½ the frame duration. Shutter angle may be expressed as: shutter_angle = frame_rate * <NUM>*shutter_speed, where shutter_speed is the exposure duration and frame_rate is the inverse of frame duration. frame_rate for the given temporal sub-layer Tid may be indicated by the num_units_in_tick, time_scale , elemental_duration_in_tc_minus1[Tid]. For example, when fixed_pic_rate_within_cvs_flag[ Tid ] is equal to <NUM>: <MAT>.

In some embodiments, the value of shutter angle (e.g., fixed_shutter_angle) may not be an integer, for example, it may be <NUM> degrees. To allow more precision, in Table <NUM>, one may replace u(<NUM>) (unsigned <NUM>-bits) with u(<NUM>) or some other suitable bit-depth (e.g., <NUM> bits, <NUM> bits, or more than <NUM> bits).

In some embodiments, it may be beneficial to express shutter angle information in terms of "Clock ticks. " In WC, the variable ClockTick is derived as follows: <MAT> Then, one can express both frame duration and exposure duration as multiple or fractional of clock ticks: <MAT> <MAT> where fN and fM are floating-point values and fN ≤ fM. Then <MAT> where Numerator and Denominator are integers approximating the fN/fM ratio.

Table <NUM> shows an example of SEI messaging indicated by equation (<NUM>). In this example, shutter angle must be larger than <NUM> for a real-world camera.

As discussed earlier, the use of u(<NUM>) (unsigned <NUM> bits) for shutter angle precision is depicted as an example and corresponds to a precision of: <NUM>/<NUM><NUM> = <NUM>. The precision can be adjusted based on real applications. For example, using u(<NUM>), the precision is <NUM>/<NUM><NUM> = <NUM>. NOTE - Shutter angle is expressed in degrees greater than <NUM> but less than or equal to <NUM> degrees. For example, a shutter angle of <NUM> degrees indicates that the exposure duration is ½ the frame duration.

The value of fixed_shutter_angle_numer_minus1 shall be less than or equal to the value of fixed_shutter_angle_demom_minus1.

The variable shutterAngle in degree is derived as follows: <MAT>.

The value of sub_layer_shutter_angle_numer_minus1[ i ] shall be less than or equal to the value of sub_layer_shutter_angle_denom_minus1[ i ].

The variable subLayerShutterAngle[ i ] in degree is derived as follows: <MAT>.

In another embodiment, frame duration (e.g., frame_duration) may be specified by some other means. For example, in DVB/ATSC, when fixed_pic_rate_within_cvs_flag[ Tid ] is equal to <NUM>: <MAT> <MAT>.

The syntax in Table <NUM> and in some of the subsequent Tables assumes that the shutter angle will always be greater than zero; however, shutter angle = <NUM> can be used to signal a creative intent where the content should be displayed without any motion blur. Such could be the case for moving graphics, animation, CGI textures and mat screens, etc. As such, for example, signalling shutter angle = <NUM> could be useful for mode decision in a transcoder (e.g., to select transcoding modes that preserve edges) as well as in a display that receives the shutter angle metadata over a CTA interface or 3GPP interface. For example, shutter angle = <NUM> could be used to indicate to a display that is should not perform any motion processing such as denoising, frame interpolation, and the like. In such an embodiment, syntax elements.

In another embodiment, fixed_shutter_angle_denom_minus1 and sub_layer_shutter_angle_denom_minus1[ i ] can also be replaced by the syntax elements fixed_shutter_angle_denom and sub_layer_shutter_angle_denom[ i ] as well.

In an embodiment, as depicted in Table <NUM>, one can reuse the num_units_in_tick and time_scale syntax defined in SPS by setting general_hrd_parameters_present_flag equal to <NUM> in WC. Under this scenario, the SEI message can be renamed as Exposure Duration SEI message.

The value of fixed_exposure_during_numer_minus1 shall be less than or equal to the value of fixed_exposure_duration_demom_minus1.

The variable fixedExposureDuration is derived as follows: <MAT>.

The value of sub_layer_exposure_duration_numer_minus1[ i ] shall be less than or equal to the value of sub_layer_exposure_duration_demom_minus1[ i ].

The variable subLayerExposureDuration[ i ] for HigestTid equal to i is derived as follows: <MAT>.

In another embodiment, as shown in Table <NUM>, one may explicitly define clockTick by the syntax elements expo_num_units_in_tick and expo_time_scale. The advantage here is that it does not rely on whether general hrd_parameters_present flag set equal to <NUM> in VVC as the previous embodiment, then <MAT>.

NOTE: The two syntax elements: expo_num_units_in_tick and expo_time_scale are defined to measure exposure duration.

It is a requirement for bitstream conformance that clockTick shall be less than or equal to ClockTick when num_units_in_tick and time_scale are present.

The variable subLayerExposureDuration[ i ] for HigestTid equal to i is deruved as follows: <MAT>.

In another embodiment, as shown in Table <NUM>, one may define the parameter ShutterInterval (i.e., exposure duration) by the syntax elements
sii_num_units_in_shutter_interval and sii_time_scale, where <MAT>.

The shutter interval information SEI message indicates the shutter interval for the associated video content prior to encoding and display - e.g., for camera-captured content, the amount of time that an image sensor was exposed to produce a picture.

When the value of sii_time_scale is greater than <NUM>, the value of ShutterInterval is specified by: <MAT>.

Otherwise (the value of sii_time_scale is equal to <NUM>), ShutterInterval should be interpreted as unknown or unspecified.

NOTE <NUM> - A value of ShutterInterval equal to <NUM> may indicate that the associated video content contains screen capture content, computer generated content, or other non-camera-capture content.

NOTE <NUM> - A value of ShutterInterval greater than the value of the inverse of the coded picture rate, the coded picture interval, may indicate that the coded picture rate is greater than the picture rate at which the associated video content was created - e.g., when the coded picture rate is <NUM> and the picture rate of the associated video content prior to encoding and display is <NUM>. The coded interval for the given temporal sub-layer Tid may be indicated by ClockTick and elemental_duration_in_tc_minus1[ Tid ]. For example, when fixed_pic_rate_within_cvs_flag[ Tid ] is equal to <NUM>, picture interval for the given temporal sub-layer Tid, defined by variable PictureInterval[ Tid ], may be specified by: <MAT>.

The value of subLayerShutterInterval[ i ] for HighestTid equal to i is derived as follows. When the value of fixed_shutter_interval_within_cvs_flag is equal to <NUM> and the value of sub_layer_shutter_interval_denom[ i ] is greater than <NUM>: <MAT>.

Otherwise (the value of sub_layer_shutter_interval_denom[ i ] is equal to <NUM>), subLayerShutterInterval[ i ] should be interpreted as unkown or unspecified. When the value of fixed_shutter_interval_within_cvs_flag is not equal to <NUM>, <MAT>.

In an alternative embodiment, instead of using a numerator and a denominator for signaling the sub-layer shutter interval, one uses a single value. An example of such syntax is shown in Table <NUM>.

NOTE <NUM> - A value of ShutterInterval equal to <NUM> may indicate that the associated video content contain screen capture content, computer generated content, or other non-camera-capture content.

NOTE <NUM> - A value of ShutterInterval greater than the value of the inverse of the coded picture rate, the coded picture interval, may indicate that the coded picture rate is greater than the picture rate at which the associated video content was created - e.g., when the coded picture rate is <NUM> and the picture rate of the associated video content prior to encoding and display is <NUM>. The coded picture interval for the given temporal sub-layer Tid may be indicated by ClockTick and elemental_duration_in_tc_minus1[ Tid ]. For example, when fixed_pic_rate_within_cvs_flag[ Tid ] is equal to <NUM>, picture interval for the given temporal sub-layer Tid, defined by variable PictureInterval[ Tid ], may be specified by: <MAT>.

When the value of fixed_shutter_interval_within_cvs_flag is equal to <NUM> and the value of sii_time_scale is greater than <NUM>, the value of subLayerShutterInterval[ i ] is specified by: <MAT>.

Otherwise (the value of sii_time_scale is equal to <NUM>), subLayerShutterInterval[ i ] should be interpreted as unknown or unspecified. When the value of
fixed_shutter_interval_within_cvs_flag is not equal to <NUM>, <MAT>.

Table <NUM> provides a summary of the six approaches discussed in Tables <NUM>-<NUM> for providing SEI messaging related to shutter angle or exposure duration.

As discussed in <CIT>, in many applications it is desired for a decoder to support playback at variable frame rates. Frame rate adaptation is typically part of the operations in the hypothetical reference decoder (HRD), as described, for example, in Annex C of Ref. [<NUM>]. In an embodiment, it is proposed to signal via SEI messaging or other means a syntax element defining picture presentation time (PPT) as function of a <NUM> clock. This is kind of repetition of the nominal decoder picture buffer (DPB) output time as specified in the HRD, but now using a <NUM> ClockTicks precision as specified in the MPEG-<NUM> system. The benefit of this SEI message are a) if HRD is not enabled, one can still use the PPT SEI message to indicate timing for each frame; b) it can ease the translation of bitstream timing and system timing.

Table <NUM> describes an example of the syntax of the proposed PPT timing message, which matches the syntax of the presentation time stamp (PTS) variable being used in MPEG-<NUM> transport (H. <NUM>) (Ref. [<NUM>]).

- Presentation times shall be related to decoding times as follows: The PPT is a <NUM>-bit number coded in three separate fields. It indicates the time of presentation, tpn(k), in the system target decoder of a presentation unit k of elementary stream n. The value of PPT is specified in units of the period of the system clock frequency divided by <NUM> (yielding <NUM>). The picture presentation time is derived from the PPT according to equation below. <MAT> where tpn(k) is the presentation time of presentation unit Pn(k).

Embodiments of the present invention may be implemented with a computer system, systems configured in electronic circuitry and components, an integrated circuit (IC) device such as a microcontroller, a field programmable gate array (FPGA), or another configurable or programmable logic device (PLD), a discrete time or digital signal processor (DSP), an application specific IC (ASIC), and/or apparatus that includes one or more of such systems, devices or components. The computer and/or IC may perform, control, or execute instructions relating to frame-rate scalability, such as those described herein. The computer and/or IC may compute any of a variety of parameters or values that relate to frame-rate scalability described herein. The image and video embodiments may be implemented in hardware, software, firmware and various combinations thereof.

Certain implementations of the invention comprise computer processors which execute software instructions which cause the processors to perform a method of the invention. For example, one or more processors in a display, an encoder, a set top box, a transcoder or the like may implement methods related to frame-rate scalability as described above by executing software instructions in a program memory accessible to the processors. Embodiments of the invention may also be provided in the form of a program product. The program product may comprise any non-transitory and tangible medium which carries a set of computer-readable signals comprising instructions which, when executed by a data processor, cause the data processor to execute a method of the invention. Program products according to the invention may be in any of a wide variety of non-transitory and tangible forms. The program product may comprise, for example, physical media such as magnetic data storage media including floppy diskettes, hard disk drives, optical data storage media including CD ROMs, DVDs, electronic data storage media including ROMs, flash RAM, or the like. The computer-readable signals on the program product may optionally be compressed or encrypted. Where a component (e.g. a software module, processor, assembly, device, circuit, etc.) is referred to above, unless otherwise indicated, reference to that component (including a reference to a "means") should be interpreted as including as equivalents of that component any component which performs the function of the described component (e.g., that is functionally equivalent), including components which are not structurally equivalent to the disclosed structure which performs the function in the illustrated example embodiments of the invention.

Example embodiments that relate to frame-rate scalability are thus described. In the foregoing specification, embodiments of the present invention have been described with reference to numerous specific details that may vary from implementation to implementation. Thus, the sole and exclusive indicator of what is the invention and what is intended by the applicants to be the invention is the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction. Any definitions expressly set forth herein for terms contained in such claims shall govern the meaning of such terms as used in the claims. Hence, no limitation, element, property, feature, advantage or attribute that is not expressly recited in a claim should limit the scope of such claim in any way. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

This Appendix provides a copy of Table D. <NUM> and associated pic_struct-related information from the H. <NUM> specification (Ref. [<NUM>]).

pic_struct indicates whether a picture should be displayed as a frame or as one or more fields and, for the display of frames when fixed_pic_rate_within_cvs_flag is equal to <NUM>, may indicate a frame doubling or tripling repetition period for displays that use a fixed frame refresh interval equal to DpbOutputElementalInterval[ n ] as given by Equation E-<NUM>. The interpretation of pic_struct is specified in Table D. Values of pic _struct that are not listed in Table D. <NUM> are reserved for future use by ITU-T | ISO/IEC and shall not be present in bitstreams conforming to this version of this Specification. Decoders shall ignore reserved values of pic_struct.

When present, it is a requirement of bitstream conformance that the value of pic_struct shall be constrained such that exactly one of the following conditions is true:.

When fixed_pic_rate_within_cvs_flag is equal to <NUM>, frame doubling is indicated by pic_struct equal to <NUM>, which indicates that the frame should be displayed two times consecutively on displays with a frame refresh interval equal to DpbOutputElementalInterval[ n ] as given by Equation E-<NUM>, and frame tripling is indicated by pic struct equal to <NUM>, which indicates that the frame should be displayed three times consecutively on displays with a frame refresh interval equal to DpbOutputElementalInterval[ n ] as given by Equation E-<NUM>. NOTE <NUM> - Frame doubling can be used to facilitate the display, for example, of <NUM> progressive-scan video on a <NUM> progressive-scan display or <NUM> progressive-scan video on a <NUM> progressive-scan display. Using frame doubling and frame tripling in alternating combination on every other frame can be used to facilitate the display of <NUM> progressive-scan video on a <NUM> progressive-scan display.

The nominal vertical and horizontal sampling locations of samples in top and bottom fields for <NUM>:<NUM>:<NUM>, <NUM>:<NUM>:<NUM> and <NUM>:<NUM>:<NUM> chroma formats are shown in Figure D. <NUM>, Figure D. <NUM>, and Figure D. <NUM>, respectively.

Association indicators for fields (pic_struct equal to <NUM> through <NUM>) provide hints to associate fields of complementary parity together as frames. The parity of a field can be top or bottom, and the parity of two fields is considered complementary when the parity of one field is top and the parity of the other field is bottom.

Claim 1:
An apparatus for generating an encoded video stream, comprising:
one or more processors; and
a memory, storing instructions which, when executed by the one or more processors, cause the one or more processors to generate the encoded video stream, the encoded video stream comprising:
an encoded picture section including an encoding of a sequence of video pictures; and
a signaling section including an encoding of:
a first shutter angle flag that indicates whether shutter angle information is fixed for all temporal sub-layers in the encoded picture section; and
if the first shutter angle flag indicates that shutter angle information is fixed, then the signaling section including a fixed shutter angle value for displaying a decoded version of the sequence of video pictures for all the temporal sub-layers in the encoded picture section using the fixed shutter angle value, else
the signaling section including an array of sub-layer shutter angle values, wherein for each one of the temporal sub-layers, a value in the array of sub-layer shutter angle values indicates a corresponding shutter angle for displaying a decoded version of the temporal sub-layer of the sequence of video pictures.