Signaling preselection information in media files based on movie-level track group information boxes - Patents.com
By setting the Track_in_movie flag to 0 under specific conditions, the patent addresses incomplete track regeneration issues in video processing, ensuring complete track sets are played, thus maintaining a consistent user experience.
Patent Information
- Application Number
- JP2023076510
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2022-07-18
- Filing Date
- 2023-05-08
- Publication Date
- 2025-01-28
- Estimated Expiration
- 2043-05-08
AI Technical Summary
Existing video processing technologies face issues with incomplete experiences due to unclear specifications in ISOBMFF standards for pre-selection signaling, leading to players regenerating incomplete track sets, and there is a lack of restrictions to prevent this.
Implementing specific conditions in the Track_in_movie flag and PreselectionGroupBox to ensure that players only regenerate complete track sets by setting the Track_in_movie flag to 0 under certain conditions, such as the absence of PreselectionGroupBox or when the number of tracks is insufficient.
Prevents players from regenerating incomplete track sets by ensuring that only complete track sets are played, adhering to pre-selection criteria and providing a consistent user experience.
Smart Images

Figure 0007623076000011 
Figure 0007623076000012 
Figure 0007623076000013
Abstract
Description
[Technical field]
[0001] Under applicable patent laws and / or regulations pursuant to the Paris Convention, this application is filed to timely claim priority to and the benefit of U.S. Provisional Application No. 63 / 338,314, filed May 4, 2022, U.S. Provisional Application No. 63 / 354,874, filed June 23, 2022, and U.S. Provisional Application No. 63 / 390,179, filed July 18, 2022. For all purposes under the law, the entire disclosures of the aforementioned applications are incorporated by reference as part of the disclosure of this application.
[0002] This patent document relates to the creation, storage and consumption of digital audio-video media information in a file format. [Background technology]
[0003] Digital video accounts for the largest amount of bandwidth used on the Internet and other digital communications networks, and as the number of connected user devices capable of receiving and displaying video increases, the bandwidth demands for digital video usage are likely to continue to grow. Summary of the Invention
[0004] A first aspect relates to a method for processing video data, the method including: determining that playing only the track will result in an incomplete experience, wherein a track_in_movie flag is set to 0 to prevent a player from playing only the track; and converting between video media data and a media data file based on the track_in_movie flag.
[0005] A second aspect relates to an apparatus for processing video data, the apparatus including one or more processors and a non-transitory memory having instructions that, when executed by the one or more processors, cause the one or more processors to perform any of the preceding aspects.
[0006] A third aspect relates to a non-transitory computer-readable medium including a computer program product for use by a video coding device, the computer program product including computer-executable instructions stored on the non-transitory computer-readable medium that, when executed by one or more processors, causes the video coding device to perform the method of any of the preceding aspects.
[0007] A fourth aspect relates to a non-transitory computer-readable recording medium storing a bitstream of video generated by a method performed by a video processing device, the method including: determining that playing only the track would result in an incomplete experience, wherein a track_in_movie flag is set to 0 to prevent a player from playing only the track; and generating the bitstream based on the determination.
[0008] A fifth aspect relates to a method for storing a bitstream of a video, the method including: determining that playing only the track would result in an incomplete experience, where a track_in_movie flag is set to 0 to prevent a player from playing only the track; converting between video media data and a media data file based on the track_in_movie flag; and storing the bitstream on a non-transitory computer-readable recording medium.
[0009] A sixth aspect relates to a method, device or system as described herein.
[0010] For clarity, any one of the above-described embodiments may be combined with any one or more of the other above-described embodiments to create new embodiments within the scope of the present disclosure.
[0011] These and other features will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims. [Brief description of the drawings]
[0012] For a more complete understanding of this disclosure, reference is now made to the following brief description taken in conjunction with the accompanying drawings and detailed description, in which like reference numerals represent like parts.
[0013] [Figure 1] 1 is a block diagram illustrating an example video processing device. [Diagram 2] 1 is a block diagram of an exemplary video processing device. [Diagram 3] 4 is a flow chart for an exemplary method of video processing. [Figure 4] 1 is a block diagram illustrating an example video coding system. [Diagram 5] FIG. 2 is a block diagram illustrating an example encoder. [Figure 6] FIG. 2 is a block diagram illustrating an exemplary decoder. [Figure 7] FIG. 2 is a schematic diagram of an exemplary encoder. [Figure 8] 4 is a flow chart for an exemplary method of video processing. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0014] Although exemplary implementations of one or more embodiments are provided below, the disclosed systems and / or methods may be implemented using any number of techniques, whether currently known or yet to be developed. The present disclosure is in no way limited to the exemplary implementations, drawings, and techniques illustrated below, including the exemplary designs and implementations shown and described herein, but may be modified within the scope of the appended claims, along with their full scope of equivalents.
[0015] Section headings are used in this document for ease of understanding, and do not limit the applicability of the techniques and embodiments disclosed in each section to only that section. Furthermore, H.266 terminology is used in some descriptions for ease of understanding only, and not to limit the scope of the disclosed techniques. Thus, the techniques described herein are applicable to other video codec protocols and designs. In this document, editorial changes to the text with respect to the Versatile Video Coding (VVC) specification or the draft ISO base media file format (ISOBMFF) file format specification are indicated with bold italics to indicate text that has been cancelled, and bold underlined to indicate text that has been added.
[0016] 1. Initial discussion This document relates to media file formats. In particular, it relates to signaling preselection information in a media file based on a movie level box carrying information of track groups, where a preselection is a set of one or more tracks representing one version of a media presentation that can be selected by a user for simultaneous decoding and presentation. This idea may be applied individually or in various combinations to media files according to any media file format, for example ISOBMFF and file formats derived from ISOBMFF.
[0017] 2. Video Coding Introduction 2.1 Video Coding Standards Video coding standards have evolved primarily through the development of the International Telecommunication Union Telecommunication Standardization Sector (ITU-T) and the International Organization for Standardization and the International Electrotechnical Commission (ISO / IEC). ITU-T created H.261 and H.263, while ISO / IEC created MPEG-1 and MPEG-4 Visual, and the two organizations jointly created the H.262 / MPEG-2 Video, H.264 / MPEG-4 AVC (Advanced Video Coding), and H.265 / HEVC (High Efficiency Video Coding)[1] standards. Starting with H.262, video coding standards are based on a hybrid video coding structure where temporal prediction plus transform coding is utilized. In 2015, the Joint Video Exploration Team (JVET) was jointly established by VCEG and MPEG to explore future video coding technologies beyond HEVC. Many of the new methods were adopted by JVET and included in the reference software named JEM (Joint Exploration Model) [2]. JVET was renamed to JVET (Joint Video Experts Team) when the VVC (Versatile Video Coding) project was officially launched. VVC [3] is a coding standard that aims to reduce the bitrate by 50% compared to HEVC.
[0018] The Versatile Video Coding (VVC) standard (ITU-T H.266 ISO / IEC 23090-3)[3][4] and the related Versatile Supplementary Enhancement Information (VSEI) standard (ITU-T H.274 ISO / IEC 23002-7)[5][6] are designed for use in the widest range of applications, including traditional uses such as television broadcast, videoconferencing, and playback from storage media, as well as newer, more advanced use cases such as adaptive bitrate streaming, video region extraction, compositing and merging content from multiple coded video bitstreams, multiview video, scalable layered coding, and viewport-adaptive 360° immersive media.
[0019] 2.2 File Format Standards Media streaming applications are based on the internet protocol (IP), transmission control protocol (TCP) and hypertext transfer protocol (HTTP) transport methods and rely on file formats such as ISO base media file format (ISOBMFF) [7]. One such streaming system is dynamic adaptive streaming over HTTP (DASH) [8]. When using video formats with ISOBMFF and DASH, file format specifications specific to the video format, such as the AVC file format and the HEVC file format [9], are needed for the encapsulation of video content in ISOBMFF tracks and DASH representations and segments. Important information about the video bitstream, such as profile, tier, level, and many others, needs to be exposed as file format level metadata for content selection purposes and / or DASH Media Presentation Description (MPD), for example, to select appropriate media segments for both initialization at the start of a streaming session and stream adaptation during a streaming session. Similarly, when using image formats with ISOBMFF, file format specifications specific to the image format, such as the AVC image file format and the HEVC image file format
[10] , would be needed.
[0020] 2.3 Track Grouping and Entity Grouping ISOBMFF specifies both track grouping and entity grouping. Track grouping is signaled based on track group boxes contained in a track box. In other words, track grouping is track level signaling. This track group box allows the indication of a group of tracks, each group sharing certain characteristics or tracks within a group having a certain relationship. The certain characteristics or relationships are indicated by the box type of the box contained in the track group box. The box contained in the track group box contains an identifier that can be used to conclude that tracks belong to the same track group. Tracks that contain the same type of containing box in the track group box and have the same identifier value in these containing boxes belong to the same track group.
[0021] An Entity Group is a grouping of items, which may also group tracks. Entities within an Entity Group share certain characteristics or have certain relationships, as indicated by the grouping type. Entity Groups are represented in a GroupsListBox. An Entity Group defined in a GroupsListBox of a file level MetaBox points to tracks or file level items. An Entity Group defined in a GroupsListBox of a file level MetaBox points to movie level items. An Entity Group defined in a GroupsListBox of a track level MetaBox references the track level items of that track. The GroupsListBox contains EntityToGroupBoxes, each of which defines one entity group.
[0022] There are two main differences between track grouping and entity grouping. 1) Track grouping signaling is at track level, whereas entity grouping for this purpose is at file level. Due to this difference, these two mechanisms have the following advantages and disadvantages: a) The potential advantage of entity grouping is some bit savings. b) An arguable advantage of entity grouping is that less analysis is required to determine which tracks contribute to preselection. c) Track grouping has the potential advantage of being easy to use for editing operations such as removing some tracks without the need to modify the Track Group Box (unless some associated parameter, e.g. the number of tracks, is being added). 2) Entity grouping can also be applied to items such as image items, whereas track grouping cannot. If there is a use case to have items in preselection, this is an advantage for entity grouping.
[0023] 2.4 Preselection signaling in ISOBMFF An amendment to the ISOBMFF standard is under development. An example specification of this amendment is contained in
[11] , which includes the specification of several features for the signaling of preselection. The specification for signaling of preselection in
[11] , with modifications based on
[12] ,
[13] , and
[14] , is as follows: ...
[0024] 3.1 Withdrawal and Terminology ... Pre-selection A set of one or more tracks representing one version of a media presentation that can be selected by a user for simultaneous decoding / presentation. ...
[0025] 8.3.4.x Track Group Description Box 8.3.4.x.1 Definition Box type: tkgd Container: MovieBox or MovieHeaderBox Required: No Quantity: 0 or 1
[0026] A TrackGroupDescriptionBox provides a set of TrackGroupEntryBoxes, each providing detailed characteristics of a particular track group. The syntax of a TrackGroupEntryBox is determined by the track_group_entry_type. A TrackGroupEntryBox is mapped to a track group by a unique track_group_entry_type associated with the track_group_type. Multiple TrackGroupEntryBoxes with the same track_group_entry_type may be presented in a TrackGroupDescriptionBox, in which case the TrackGroupEntryBoxes shall have different track_group_ids.
[0027] 8.3.4.x.2 Syntax
number
[0028] 8.3.4.x.3 Meaning track_group_entry_type indicates the four character code (4CC) associated with the track_group_type. The track_group_id and track_group_entry_type pair identifies the track group that the TrackGroupEntryBox describes.
[0029] 8.3.4.4.3 Preselection group box 8.3.4.4.3.1 Definition The presence of a TrackGroupTypeBox (also called a PreselectionGroupBox in a track) with track_group_type equal to pres indicates that this track contributes to preselection. Tracks with the same value of track_group_id in a PreselectionGroupBox are part of the same preselection. A track that contains a PreselectionGroupBox and does not contain all the subtracks required for at least one preselection SHALL set the track_in_movie flag to 0 in its TrackHeaderBoxes. This prevents players that do not understand PreselectionBoxes from playing the track and resulting in an incomplete experience. Tracks that contain PreselectionGroupBoxes that do not describe a PreselectionInformationBox SHALL set the track_in_movie flag to 0. NOTE: It is good practice to have one track with the track_in_movie flag set to 1. This suggests that this track contributes to at least one complete experience.
[0030] 8.3.4.4.3.2 Syntax
number
[0031] 8.3.4.4.3.3 Semantics This subordinate clause is empty.
[0032] 8.3.4.4.4 Preselection Track Group Entry Box 8.3.4.4.4.1 Definition Box Type: prse Container: TrackGroupDescriptionBox Required: No Quantity: 0 or 1
[0033] A preselection may be qualified, for example, by language, type or media specific attributes (e.g. audio rendering representation, object interactivity or channel layout). Attributes signaled in a PreselectionTrackGroupEntryBox shall take precedence over attributes signaled in contributing tracks. A PreselectionTrackGroupEntryBox shall only describe track groups identified by track_group_type equal to "prse". All attributes that uniquely qualify it as a preselection shall be present in the PreselectionTrackGroupEntryBox of a preselection.
[0034] 8.3.4.4.3.2 Syntax
number
[0035] 8.3.4.4.4.3 Semantics selection_priority is an integer that declares the priority of the preselection in cases where other differentiation, such as by media language, is not possible. A lower number indicates a higher priority. presel_info is an instance of PreselectionInformationBox that provides information describing the preselection. presel_processing is an instance of PreselectionProcessingBox that provides the information needed to process the preselection.
[0036] 8.3.4.4.5 Preselection information box 8.3.4.4.5.1 Definition Box type: prsi Container:PreselectionGroupBox Required: No Quantity: 0 or 1 This box aggregates all semantic information about the preselection.
[0037] 8.3.4.4.5.2 Syntax
number
[0038] 8.3.4.4.5.3 Semantics This box contains information about which experiences are available when this preselection is selected. Boxes suitable for describing a preselection include, but are not limited to, the following list of boxes defined in this specification: Audio object box (section 8.3.4.4.5) Audio object selection box (section 8.3.4.4.7) Extended language tags (Section 8.4.6) User Data Box (Section 8.10.1) Track type (section 8.10.4) Label box (Section 8.18.4) Audio rendering display (Section 8.18.5) Channel layout (Section 12.2.4.1)
[0039] If a User Data box is included in a PreselectionBox, it does not carry any of the above boxes. numTracks declares how many tracks contribute to the playout of the preselection. This value shall match the number of tracks that contain a PreselectionGroupBox with the same track_group_id. Note 1: Not all tracks that contribute to the playout of a preselection are delivered in the same file. Note 2: The kind box may take advantage of the role scheme defined in ISO / IEC 23009-1, clause 5.8.5.5, to provide a commonly used scheme for describing the characteristics of preselection. Additionally, media type specific boxes may be used to describe the properties of preselection. ...
[0040] 8.3.4.4.10 Preselection Processing Box 8.3.4.4.10.1 Definition Box type: prsi Container:PreselectionGroupBox Required: Yes Quantity: Only 1 This box contains information about how the tracks contributing to the pre-selection shall be processed. Media type specific boxes may be used to describe further processing.
[0041] 8.3.4.4.10.2 Syntax
number
[0042] 8.3.4.4.10.3 Semantics The preselection_tag is a codec-specific value that a playback system can provide to a decoder to uniquely identify one of several preselections in the media. The order specifies the conformance rules for representations in the adaptation set within the preselection according to ISO / IEC 23009-1, from the enumerated set below. 0: undefined 1: Time-ordered 2: Fully-ordered
[0043] track_order defines the order of this track in the merging process described below. sample_merge_flag equal to 1 indicates that this track can be merged with another track as described below. Tracks that contribute to the selected preselection and have sample_merge_flag equal to 1 shall merge their samples according to their respective media type. If the media type does not specify such a process, the contributing samples may be appended to the samples of the track with the next lower track_order. If the output samples generated from this merging process are embedded in a new track, this track shall conform to a media type derived from the base media type. Note: For MPEG-H 3D Audio, this process is defined in ISO / IEC 23008-3 clause 14.6. ...
[0044] 3. Technical problem solved by the disclosed technical solution An exemplary design for signaling preselection in ISOBMFF using a track grouping mechanism and movie level boxes carrying track group information addresses the following issues: First, it is specified that tracks that contain a PreselectionGroupBox and do not contain all sub-tracks required for at least one preselection shall have the track_in_movie flag set to 0 in their TrackHeaderBoxes. However, a preselection is defined to contain a set of one or more tracks (e.g., not sub-tracks). Thus, this specification is unclear. It is specified that tracks that contain PreselectionGroupBoxes that do not describe a PreselectionInformationBox shall have the track_in_movie flag set to 0. However, in the current design (as described in section 2.4), each track in (or contributing to) a preselection always has a PreselectionGroupBox that always contains a PreselectionInformationBox. Thus, this specification is unclear. Third, the container box for both PreselectionInformationBox and PreselectionProcessingBox is specified to be a PreselectionGroupBox. However, it should be a PreselectionTrackGroupEntryBox instead. Fourth, in a file, the number of tracks that belong to a preselection can be less than the number of tracks signaled for preselection. In other words, the preselection is incomplete in a file because one or more tracks are missing. In this case, all these tracks should be marked by having the track_in_movie flag equal to 0 in the TrackHeaderBoxes to prevent the player from playing tracks that form only a subset of the preselection, which would result in an incomplete experience. However, there is no such constraint.
[0045] 4. List of Solutions and Implementations In order to solve the above problems, the methods summarized below are disclosed. The inventions should be considered as examples to illustrate the general concept, and should not be interpreted in a narrow sense. Moreover, these inventions can be applied individually or combined in any manner.
[0046] Example 1 To solve the first problem, it is stipulated that for a track that includes a PreselectionGroupBox, when there is no preselection in the file that includes only that track, the value of the track_in_movie flag in the TrackHeaderBox of that track shall be equal to 0.
[0047] a. One alternative provides: When playing a track without processing any PreselectionGroupBoxes contained in the track would result in an incomplete experience, the track_in_movie flag in the TrackHeaderBox should be set to 0 to prevent players that do not understand PreselectionGroupBoxes from playing the track. One such example is when there is no preselection consisting of just that track in the file.
[0048] b. Another alternative provides: Setting the track_in_movie flag in the TrackHeaderBox to 0 can be used to prevent players that do not understand PreselectionGroupBoxes from playing a track when playing a track without processing any PreselectionGroupBoxes contained in the track would result in an incomplete experience. One such example is when there is no preselection consisting of just that track in the file.
[0049] Example 2 To solve the second problem, for a particular preselection in a file that contains a set of tracks containing a PreselectionGroupBox with track_group_id equal to a particular value indicated by thisTrackGroupId, when there is no TrackGroupDescriptionBox containing a PreselectionTrackGroupEntryBox with track_group_id equal to thisTrackGroupId, the value of the track_in_movie flag in the TrackHeaderBoxes of all these tracks shall be equal to 0.
[0050] a. One alternative provides: For a particular preselection consisting of a set of tracks in a file containing a PreselectionGroupBox with track_group_id equal to a particular value indicated by thisTrackGroupId, when there is no TrackGroupDescriptionBox containing a PreselectionTrackGroupEntryBox with track_group_id equal to thisTrackGroupId, the value of the track_in_movie flag in the TrackHeaderBoxes of all these tracks shall be set to 0.
[0051] b. Another alternative provides: NOTE: For a particular preselection consisting of a set of tracks in a file containing a PreselectionGroupBox with track_group_id equal to a particular value indicated by thisTrackGroupId, when there is no TrackGroupDescriptionBox containing a PreselectionTrackGroupEntryBox with track_group_id equal to thisTrackGroupId, setting the value of the track_in_movie flag in the TrackHeaderBoxes of all these tracks to 0 can be used to prevent a player from playing that set of tracks.
[0052] Example 3 To solve the third problem, a container box for both PreselectionInformationBox and PreselectionProcessingBox is defined in PreselectionTrackGroupEntryBox.
[0053] Example 4 To solve the fourth problem, when the number of tracks in a file that contain PreselectionGroupBoxes with track_group_id equal to a particular value indicated by thisTrackGroupId is less than the numTracks in the PreselectionInformationBox in a PreselectionTrackGroupEntryBox whose track_group_id is equal to thisTrackGroupId, the value of the track_in_movie flag in the TrackHeaderBoxes of all these tracks shall be equal to 0.
[0054] a. One alternative provides: When the number of tracks in a file that contain PreselectionGroupBoxes with track_group_id equal to a particular value indicated by thisTrackGroupId is less than the numTracks in the PreselectionInformationBox in the PreselectionTrackGroupEntryBox whose track_group_id is equal to thisTrackGroupId, the value of the track_in_movie flag in the TrackHeaderBoxes of all these tracks should be set to 0.
[0055] b. Another alternative provides: NOTE: When the number of tracks in a file that contain PreselectionGroupBoxes with track_group_id equal to a particular value indicated by thisTrackGroupId is less than the numTracks in the PreselectionInformationBox in the PreselectionTrackGroupEntryBox with track_group_id equal to thisTrackGroupId, setting the value of the track_in_movie flag in the TrackHeaderBoxes of all these tracks to 0 can be used to prevent the player from playing that set of tracks.
[0056] Example 5 5) Alternatively, in order to solve the second and fourth problems, the following is provided: For a particular preselection consisting of a set of N tracks in a file containing a PreselectionGroupBox with track_group_id equal to a particular value indicated by thisTrackGroupId, the value of the track_in_movie flag in the TrackHeaderBoxes of all these tracks shall be set to 0 if one or both of the following conditions are true: there is no TrackGroupDescriptionBox containing a PreselectionTrackGroupEntryBox with track_group_id equal to thisTrackGroupId, and N is less than numTracks in a PreselectionInformationBox in a PreselectionTrackGroupEntryBox with track_group_id equal to thisTrackGroupId.
[0057] Example 6 6) Alternatively, in order to solve the second and fourth problems, the following is provided: For a particular preselection consisting of a set of N tracks in a file containing a PreselectionGroupBox with track_group_id equal to a particular value indicated by thisTrackGroupId, the value of the track_in_movie flag in the TrackHeaderBoxes of all these tracks shall be set to 0 if one or both of the following conditions are true: there is no TrackGroupDescriptionBox containing a PreselectionTrackGroupEntryBox with track_group_id equal to thisTrackGroupId, and N is less than numTracks in the PreselectionInformationBox in the PreselectionTrackGroupEntryBox with track_group_id equal to thisTrackGroupId.
[0058] Example 7 7) Alternatively, to solve the second and fourth problems, the following is provided: NOTE: For a particular preselection consisting of a set of N tracks in a file that contain a PreselectionGroupBox with track_group_id equal to a particular value indicated by thisTrackGroupId, setting the value of the track_in_movie flag in the TrackHeaderBoxes of all these tracks to 0 may be used to prevent a player from playing the set of tracks when one or both of the following conditions are true: there is no TrackGroupDescriptionBox that contains a PreselectionTrackGroupEntryBox with track_group_id equal to thisTrackGroupId, and N is less than numTracks in the PreselectionInformationBox in the PreselectionTrackGroupEntryBox with track_group_id equal to thisTrackGroupId.
[0059] Example 8 8) Alternatively, to solve the second and fourth problems, the following is provided: When playing a set of tracks in a preselection in a file would result in an incomplete experience, the track_in_movie flag in the TrackHeaderBoxes of all these tracks should be set to 0 to prevent the player from playing the set of tracks. Some such examples are as follows: A preselection consists of a set of N tracks containing PreselectionGroupBoxes with track_group_id equal to a particular value indicated by thisTrackGroupId, and one or both of the following conditions are true: there is no TrackGroupDescriptionBox containing a PreselectionTrackGroupEntryBox with track_group_id equal to thisTrackGroupId, and N is less than numTracks in a PreselectionInformationBox in a PreselectionTrackGroupEntryBox with track_group_id equal to thisTrackGroupId.
[0060] Example 9 9) Alternatively, to solve the second and fourth problems, the following is provided: NOTE: When playing a set of tracks in a preselection in a file would result in an incomplete experience, setting the track_in_movie flag in the TrackHeaderBoxes of all these tracks to 0 can be used to prevent the player from playing that set of tracks. Some such examples are as follows: A preselection consists of a set of N tracks containing PreselectionGroupBoxes with track_group_id equal to a particular value indicated by thisTrackGroupId, and one or both of the following conditions are true: there is no TrackGroupDescriptionBox containing a PreselectionTrackGroupEntryBox with track_group_id equal to thisTrackGroupId, and N is less than numTracks in a PreselectionInformationBox in a PreselectionTrackGroupEntryBox with track_group_id equal to thisTrackGroupId.
[0061] 5. Embodiments Below are some exemplary embodiments for all of the disclosed items and most of their subitems summarized above in Section 4. The most relevant portions that have been added or modified are indicated in underlined bold font, and some portions that have been deleted are indicated in italicized bold font. There may be some other changes, but these are editorial in nature and therefore will not be noted. It does not include any parts that remain unchanged.
[0062] 5.1 First embodiment This embodiment applies to all of items 1 to 4. ... [Outside 1] TIFF0007623076000006.tif244169TIFF0007623076000007.tif102170
[0063] 5.2 Second embodiment This embodiment applies to all of items 1 to 4. ... [Outside 2] TIFF0007623076000008.tif249170TIFF0007623076000009.tif88167
[0064] 6.Reference materials [Outside 3] TIFF0007623076000010.tif216170
[0065] 1 is a block diagram illustrating an example video processing system 4000 in which various techniques disclosed herein can be implemented. Various implementations may include some or all of the components of system 4000. System 4000 may include an input 4002 for receiving video content. The video content may be received in raw or uncompressed format, e.g., 8 or 10 bit multi-component pixel values, or may be in a compressed or encoded format. Input 4002 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces such as Ethernet, passive optical network (PON), and wireless interfaces such as Wi-Fi or cellular interfaces.
[0066] The system 4000 may include a coding component 4004 that may implement various coding or encoding methods described in this document. The coding component 4004 may reduce the average bit rate of the video from the input 4002 to the output of the coding component 4004 to generate a coded representation of the video. Thus, the coding techniques may be referred to as video compression or video transcoding techniques. The output of the coding component 4004 may be stored or transmitted via a connected communication, as represented by component 4006. The stored or communicated bitstream (or coded) representation of the video received at the input 4002 may be used by component 4008 to generate pixel values or displayable video that are sent to the display interface 4010. The process of generating a user-viewable video from the bitstream representation may be referred to as video decompression. Additionally, although certain video processing operations are referred to as "coding" operations or tools, it will be understood that the coding tools or operations may be used in an encoder, or that a corresponding decoding tool or operation that reverses the results of the coding may be performed by a decoder.
[0067] Examples of peripheral bus interfaces or display interfaces include universal serial bus (USB), high definition multimedia interface (HDMI), or display port, etc. Examples of storage interfaces include serial advanced technology attachment (SATA), peripheral component interconnect (PCI), integrated drive electronics (IDE) interfaces, etc. The techniques described herein may be embodied in a variety of electronic devices, such as mobile phones, laptops, smartphones, or other devices capable of digital data processing and / or video display.
[0068] 2 is a block diagram of an exemplary video processing device 4100. The device 4100 may be used to implement one or more of the methods described herein. The device 4100 may be embodied in a smartphone, a tablet, a computer, an Internet of Things (IoT) receiver, etc. The device 4100 may include one or more processors 4102, one or more memories 4104, and a video processing circuit 4106. The processor 4102 may be configured to implement one or more methods described herein. The memory(s) 4104 may be used to store data and code used to implement the methods and techniques described herein. The video processing circuit 4106 may be used to implement some of the techniques described herein in a hardware circuit. In some embodiments, the video processing circuit 4106 may be at least partially included in the processor 4102, for example a graphics co-processor.
[0069] 3 is a flow chart for an example method 4200 for video processing. The method 4200 includes, at step 4202, determining a value of an in-movie track flag for a track in a media data file. When there is no pre-selection in a media data file that includes only tracks, the value of the in-movie track flag is equal to 0. At step 4204, a conversion is performed between the video media data and the media data file based on the in-movie track flag. The conversion at step 4204 may include encoding at an encoder or decoding at a decoder, depending on the example.
[0070] It should be noted that method 4200 may be implemented in an apparatus for processing video data including a processor and a non-transitory memory having instructions, such as video encoder 4400, video decoder 4500, and / or encoder 4600. In such a case, the instructions executed by the processor cause the processor to perform method 4200. Furthermore, method 4200 may be performed by a non-transitory computer-readable medium including a computer program product for use by a video coding device. The computer program product includes computer-executable instructions stored on the non-transitory computer-readable medium that, when executed by the processor, cause the video coding device to perform method 4200.
[0071] 4 is a block diagram illustrating an example video coding system 4300 that can utilize techniques of this disclosure. The video coding system 4300 may include a source device 4310 and a destination device 4320. The source device 4310 generates encoded video data, which may be referred to as a video encoding device. The destination device 4320 may decode the encoded video data generated by the source device 4310, which may be referred to as a video decoding device.
[0072] The source device 4310 may include a video source 4312, a video encoder 4314, and an input / output (I / O) interface 4316. The video source 4312 may include a source such as a video capture device, an interface for receiving video data from a video content provider, and / or a computer graphics system for generating video data, or a combination of such sources. The video data may include one or more pictures. The video encoder 4314 encodes the video data from the video source 4312 to generate a bitstream. The bitstream may include a sequence of bits that form a coded representation of the video data. The bitstream may include a coded picture and associated data. A coded picture is a coded representation of a picture. The associated data may include a sequence parameter set, a picture parameter set, and other syntax structures. The I / O interface 4316 may include a modulator / demodulator (modem) and / or a transmitter. The encoded video data may be transmitted directly to the destination device 4320 via the I / O interface 4316 through the network 4330. The encoded video data may also be stored on a storage medium / server 4340 for access by the destination device 4320.
[0073] The destination device 4320 may include an I / O interface 4326, a video decoder 4324, and a display device 4322. The I / O interface 4326 may include a receiver and / or a modem. The input / output interface 4326 may obtain encoded video data from the source device 4310 or a storage medium / server 4340. The video decoder 4324 may decode the encoded video data. The display device 4322 may display the decoded video data to a user. The display device 4322 may be integrated with the destination device 4320 or may be external to the destination device 4320 that may be configured to interface with an external display device.
[0074] The video encoder 4314 and the video decoder 4324 may operate in accordance with a video compression standard, such as the High Efficiency Video Coding (HEVC) standard, the Versatile Video Coding (VVM) standard, and other current and / or future standards.
[0075] 5 is a block diagram illustrating an example of a video encoder 4400 that may be the video encoder 4314 in the system 4300 shown in FIG. 4. The video encoder 4400 may be configured to perform any or all of the techniques of this disclosure. The video encoder 4400 includes multiple functional components. The techniques described in this disclosure may be shared among various components of the video encoder 4400. In some examples, a processor may be configured to perform any or all of the techniques described in this disclosure.
[0076] Functional components of the video encoder 4400 may include a partition unit 4401, a prediction unit 4402 which may include a mode selection unit 4403, a motion estimation unit 4404, a motion compensation unit 4405, and an intra prediction unit 4406, a residual generation unit 4407, a transform processing unit 4408, a quantization unit 4409, an inverse quantization unit 4410, an inverse transform unit 4411, a reconstruction unit 4412, a buffer 4413, and an entropy encoding unit 4414.
[0077] In other examples, the video encoder 4400 may include more, fewer, or different functional components. In one example, the prediction unit 4402 may include an intra block copy (IBC) unit. The IBC unit may perform prediction in an IBC mode, where at least one reference picture is the picture in which the current video block is located.
[0078] Additionally, some components, such as the motion estimation unit 4404 and the motion compensation unit 4405, may be highly integrated, but are depicted separately in the example video encoder 4400 for purposes of illustration.
[0079] The partition unit 4401 may partition a picture into one or more video blocks. The video encoder 4400 and the video decoder 4500 may support a variety of video block sizes.
[0080] The mode selection unit 4403 selects one of the coding modes, intra or inter, based on, for example, an error result, and provides the resulting intra- or inter-coded block to the residual generation unit 4407 for generating residual block data, and to the reconstruction unit 4412 for reconstructing an encoded block for use as a reference picture. In some examples, the mode selection unit 4403 may select a combined intra- and inter-prediction (CIIP) mode, in which prediction is based on an inter prediction signal and an intra prediction signal. The mode selection unit 4403 may also select a resolution (e.g., sub-pixel or integer pixel precision) for the motion vector for the block in the case of inter prediction.
[0081] To perform inter prediction on a current video block, motion estimation unit 4404 may generate motion information for the current video block by comparing one or more reference frames from buffer 4413 to the current video frame. Motion compensation unit 4405 may determine a predicted video block for the current video block based on the motion information and decoded samples of pictures from buffer 4413 other than the picture associated with the current video block.
[0082] Motion estimation unit 4404 and motion compensation unit 4405 may perform different operations on the current video block depending on whether the current video block is in an I slice, a P slice, or a B slice, for example.
[0083] In some examples, motion estimation unit 4404 may perform unidirectional prediction on the current video block, and motion estimation unit 4404 may search reference pictures in list 0 or list 1 for a reference video block for the current video block. Motion estimation unit 4404 may then generate a reference index indicating a reference picture in list 0 or list 1 that includes a reference video block and a motion vector indicating a spatial displacement between the current video block and the reference video block. Motion estimation unit 4404 may output the reference index, the prediction direction indicator, and the motion vector as motion information for the current video block. Motion compensation unit 4405 may generate a predictive video block for the current block based on the reference video block indicated by the motion information of the current video block.
[0084] In another example, motion estimation unit 4404 may perform bidirectional prediction on the current video block, and motion estimation unit 4404 may search reference pictures in list 0 for a reference video block for the current video block and may search reference pictures in list 1 for another reference video block for the current video block. Motion estimation unit 4404 may then generate reference indexes indicating the reference pictures in lists 0 and 1 including the reference video blocks and motion vectors indicating spatial displacement between the reference video blocks and the current video block. Motion estimation unit 4404 may output the reference index and the motion vector of the current video block as motion information of the current video block. Motion compensation unit 4405 may generate a predictive video block for the current block based on the reference video block indicated by the motion information of the current video block.
[0085] In some examples, the motion estimation unit 4404 may output a full set of motion information for a decoder's decoding process. In some examples, the motion estimation unit 4404 may not output a complete set of motion information for the current video. Rather, the motion estimation unit 4404 may signal the motion information of the current video block with reference to motion information of other video blocks. For example, the motion estimation unit 4404 may determine that the motion information of the current video block is sufficiently similar to the motion information of a neighboring video block.
[0086] In one example, the motion estimation unit 4404 may indicate, in a syntax structure associated with the current video block, a value that indicates to the video decoder 4500 that the current video block has the same motion information as another video block.
[0087] In another example, motion estimation unit 4404 may identify another video block and a motion vector difference (NVD) in a syntax structure associated with the current video block. The motion vector difference indicates a difference between the motion vector of the current video block and the motion vector of the indicated video block. Video decoder 4500 may determine the motion vector of the current video block using the motion vector of the indicated video block and the difference in the motion vector.
[0088] As mentioned above, the video encoder 4400 may predictively signal motion vectors. Two examples of predictive signaling techniques that may be implemented by the video encoder 4400 include advanced motion vector prediction (AMVP) and merge mode signaling.
[0089] The intra prediction unit 4406 may perform intra prediction on the current video block. When the intra prediction unit 4406 performs intra prediction on the current video block, the intra prediction unit 4406 may generate predictive data for the current video block based on decoded samples of other video blocks in the same picture. The predictive data for the current video block may include a predictive video block and various syntax elements.
[0090] Residual generation unit 4407 may generate residual data for the current video block by subtracting the predictive video block of the current video block from the current video block. The residual data for the current video block may include residual video blocks that correspond to different sample components of the samples in the current video block.
[0091] In other examples, such as in skip mode, there may be no residual data for the current video block, and residual generation unit 4407 may not perform a subtraction operation.
[0092] The transform processing unit 4408 may generate one or more transform coefficient video blocks for the current video block by applying one or more transforms to the residual video block associated with the current video block.
[0093] After the transform processing unit 4408 generates the transform coefficient video block associated with the current video block, the quantization unit 4409 may quantize the transform coefficient video block associated with the current video block based on one or more quantization parameter (QP) values associated with the current video block.
[0094] Inverse quantization unit 4410 and inverse transform unit 4411 may apply inverse quantization and inverse transform, respectively, to the transform coefficient video block to reconstruct a residual video block from the transform coefficient video block. Reconstruction unit 4412 may add the reconstructed residual video block to corresponding samples from one or more prediction video blocks generated by prediction unit 4402 to generate a reconstructed video block associated with the current block for storage in buffer 4413.
[0095] After reconstruction unit 4412 reconstructs the video blocks, a loop filtering operation may be performed to reduce video blocking artifacts in the video blocks.
[0096] The entropy encoding unit 4414 may receive data from other functional components of the video encoder 4400. As the entropy encoding unit 4414 receives the data, the entropy encoding unit 4414 performs one or more entropy encoding operations to generate entropy encoded data and outputs a bitstream including the entropy encoded data.
[0097] 6 is a block diagram illustrating an example of a video decoder 4500, which may be the video decoder 124 in the system 4300 shown in FIG. 4. The video decoder 4500 may be configured to perform any or all of the techniques of this disclosure. In the illustrated example, the video decoder 4500 includes multiple functional components. The techniques described in this disclosure may be shared among various components of the video decoder 4500. In some examples, a processor may be configured to perform any or all of the techniques described in this disclosure.
[0098] In the illustrated example, the video decoder 4500 includes an entropy decoding unit 4501, a motion compensation unit 4502, an intra prediction unit 4503, an inverse quantization unit 4504, an inverse transform unit 4505, a reconstruction unit 4506, and a buffer 4507. The video decoder 4500 may, in some examples, perform a decoding path that is generally the reverse of the encoding path described with respect to the video encoder 4400.
[0099] The entropy decoding unit 4501 may retrieve an encoded bitstream. The encoded bitstream may include entropy coded video data (e.g., encoded blocks of video data). The entropy decoding unit 4501 may decode the entropy coded video data, and from the entropy decoded video data, the motion compensation unit 4502 may determine motion information including motion vectors, motion vector precision, reference picture list index, and other motion information. The motion compensation unit 4502 may determine such information, for example, by performing AMVP and merge mode.
[0100] The motion compensation unit 4502 may generate motion compensated blocks, possibly performing the interpolation based on an interpolation filter. An identifier for the interpolation filter used with sub-pixel precision may be included in the syntax element.
[0101] The motion compensation unit 4502 may calculate interpolated values for sub-integer pixels of the reference block using an interpolation filter used by the video encoder 4400 during encoding of the video block. The motion compensation unit 4502 determines the interpolation filter used by the video encoder 4400 according to the received syntax information and uses the interpolation filter to generate the predictive block.
[0102] The motion compensation unit 4502 may use some of the syntax information to determine the size of the blocks used to encode the frames and / or slices of the encoded video sequence, partitioning information describing how each macroblock of a picture of the encoded video sequence is partitioned, a mode indicating how each partition is encoded, one or more reference frames (and reference frame lists) for each inter-coded block, and other information for decoding the encoded video sequence.
[0103] An intra prediction unit 4503 may form a prediction block from spatially neighboring blocks, e.g., using an intra prediction mode received in the bitstream. An inverse quantization unit 4504 inverse quantizes, i.e., dequantizes, the quantized video block coefficients provided in the bitstream and decoded by the entropy decoding unit 4501. An inverse transform unit 4505 applies an inverse transform.
[0104] The reconstruction unit 4506 may sum the residual blocks with corresponding prediction blocks generated by the motion compensation unit 4502 or the intra prediction unit 4503 to form decoded blocks. If desired, a deblocking filter may be applied to filter the decoded blocks to remove blockiness artifacts. The decoded video blocks are then stored in a buffer 4507, which also provides reference blocks for subsequent motion compensation / intra prediction to generate decoded video for presentation on a display device.
[0105] 7 is a schematic diagram of an exemplary encoder 4600. The encoder 4600 is suitable for implementing the techniques of VVC. The encoder 4600 includes three in-loop filters: a deblocking filter (DF) 4602, a sample adaptive offset (SAO) 4604, and an adaptive loop filter (ALF) 4606. Unlike the DF 4602, which uses a predefined filter, the SAO 4604 and the ALF 4606 utilize the original samples of the current picture to reduce the mean square error between the original samples and the reconstructed samples by adding an offset and applying a finite impulse response (FIR) filter, respectively, along with coded side information signaling the offset and filter coefficients. The ALF 4606 is located at the final processing stage of each image and can be considered as a tool that tries to catch and correct artifacts created in the previous stage.
[0106] The encoder 4600 further includes an intra prediction component 4608 and a motion estimation / compensation (ME / MC) component 4610 configured to receive an input video. The intra prediction component 4608 is configured to perform intra prediction, while the ME / MC component 4610 is configured to perform inter prediction using a reference picture obtained from a reference picture buffer 4612. Residual blocks from the inter prediction or intra prediction are provided to a transform (T) component 4614 and a quantization (Q) component 4616 to generate quantized residual transform coefficients, which are provided to an entropy coding component 4618. The entropy coding component 4618 entropy codes the prediction results and the quantized transform coefficients and transmits them to a video decoder (not shown). The quantization components output from the quantization component 4616 may be provided to an inverse quantization (IQ) component 4620, an inverse transform component 4622, and a reconstruction (REC) component 4624. The REC component 4624 can output images to the DF 4602, the SAO 4604, and the ALF 4606 for filtering before the images are stored in the reference picture buffer 4612.
[0107] 8 is a flow chart for an example method 4700 for video processing. The method 4700 includes, at step 4702, determining that playing only the track would result in an incomplete experience, where a track_in_movie flag is set to 0 to prevent the player from playing only the track. At step 4704, conversion is performed between the video media data and a media data file based on the track_in_movie flag. The conversion at step 4704 may include encoding at an encoder or decoding at a decoder, depending on the example.
[0108] It should be noted that method 4700 may be implemented in an apparatus for processing video data including a processor and a non-transitory memory having instructions, such as video encoder 4400, video decoder 4500, and / or encoder 4600. In such a case, the instructions executed by the processor cause the processor to perform method 4700. Additionally, method 4700 may be performed by a non-transitory computer-readable medium including a computer program product for use by a video coding device. The computer program product includes computer-executable instructions stored on the non-transitory computer-readable medium that, when executed by the processor, cause the video coding device to perform method 4700.
[0109] A list of preferred solutions with some examples is provided below.
[0110] The following solutions provide examples of the techniques discussed herein.
[0111] The following solutions illustrate exemplary implementations of the techniques discussed in the previous section.
[0112] Solution 1. A method for processing video data, comprising: determining a value of an in-movie track flag for a track in a media data file, the value of the in-movie track flag being equal to 0 when there is no pre-selection in the media data including only tracks; and converting between video media data and the media data file based on the in-movie track flag. Solution 2. The method according to Solution 1, where the track includes a preselection box. Solution 3. The method described in any of solutions 1-2, where the in-movie track flags are in the track header box. Solution 4. A method according to any of Solutions 1 to 3, wherein when playing a track without processing any preselection group boxes contained in the track would result in an incomplete experience, the Track in Movie flag in the track header box is set to 0 to prevent players that do not understand preselection group boxes from playing the track. Solution 5. The method according to Solution 4, without a preselection that includes only tracks in the media data file. Solution 6. The method according to any of Solutions 1 to 3, wherein setting the track-in-movie flag in the track header box to 0 is used to prevent players that do not understand the preselection group box from playing the track. Solution 7. Method according to solution 6, without preselection containing only tracks in the media data file. Solution 8. A method for processing video data, comprising: determining values of in-movie track flags associated with a preselection, the preselection including a set of entries including a preselection group box having a first value of a track group identifier (ID), and when no track group description box includes a preselection track group entry box with the track group ID equal to the first value, the values of the in-movie track flags of all tracks in the preselection are 0; and converting between video media data and a media data file based on the in-movie track flags. Solution 9. The method according to Solution 8, wherein the preselection track group entry box is a container box for the preselection information box. Solution 10. The method according to any of Solutions 8 to 9, wherein the preselection track group entry box is a container box for the preselection processing box. Solution 11. A method according to any of Solutions 8 to 10, wherein for a particular preselection comprising a set of tracks comprising a preselection group box with track_group_id equal to a particular value indicated by thisTrackGroupId, when there is no track group description box in the media data file comprising a preselection track group entry box with track_group_id equal to thisTrackGroupId, the value of the in-movie track flags in the track header boxes of all these tracks is set to 0. Solution 12. A method according to any of Solutions 8 to 11, wherein for a particular preselection containing a set of tracks containing a preselection group box with track_group_id equal to a particular value indicated by thisTrackGroupId, when there is no track group description box containing a preselection track group entry box with track_group_id equal to thisTrackGroupId in the media data file, setting the value of the track_in_movie flag in the track header boxes of all these tracks to 0 is used to prevent the player from playing the set of tracks. Solution 13. A method comprising: determining that a value of a track_in_movie flag in a track header box (TrackHeaderBoxes) for a number of tracks associated with a track_group_id equal to thisTrackGroupId that is less than the number of tracks (numTracks) associated with a preselection where the track group identifier (track_group_id) is equal to the thisTrackGroupId; and converting between video media data and a media data file based on the track_in_movie flag. Solution 14. The method of Solution 13, where numTracks is contained in a PreselectionInformationBox within a PreselectionTrackGroupEntryBox. Solution 15. A method according to any one of Solutions 13 to 14, wherein track_group_id is included in preselection group boxes (PreselectionGroupBoxes). Solution 16. A method according to any of Solutions 13 to 15, wherein when the number of tracks containing a preselection group box with track_group_id equal to a particular value indicated by thisTrackGroupId is less than numTracks in the preselection information box in the preselection track group entry box whose track_group_id is equal to thisTrackGroupId in the media data file, the value of the in-movie track flags in the track header boxes of all these tracks is set to 0. Solution 17. A method according to any of Solutions 13 to 16, wherein when the number of tracks containing a preselection group box with track_group_id equal to a particular value indicated by thisTrackGroupId is less than numTracks in the preselection information box in the preselection track group entry box with track_group_id equal to thisTrackGroupId in the media data file, setting the value of the track in movie flags in the track header boxes of all these tracks to 0 is used to prevent the player from playing the set of tracks. Solution 18. A method according to any of Solutions 1 to 17, wherein for a particular preselection comprising a set of N tracks containing preselection group boxes with track_group_id equal to a particular value indicated by thisTrackGroupId in the media data file, the value of the Track In Movie flags in the Track Header boxes of all these tracks is set to 0 when one or both of the following conditions are true: there is no Track Group Description box containing a preselection Track Group Entry Box with track_group_id equal to thisTrackGroupId, and N is less than numTracks in the preselection information box in the preselection Track Group Entry Box with track_group_id equal to thisTrackGroupId: Solution 19. A method according to any of Solutions 1 to 17, wherein for a particular preselection comprising a set of N tracks containing preselection group boxes with track_group_id equal to a particular value indicated by thisTrackGroupId in the media data file, the value of the Track in Movie flags in the Track Header boxes of all these tracks is set to 0 when one or both of the following conditions are true: there is no Track Group Description box containing a preselection track group entry box with track_group_id equal to thisTrackGroupId, and N is less than numTracks in the preselection information box of a preselection track group entry box with track_group_id equal to thisTrackGroupId: Solution 20. A method according to any of Solutions 1 to 17, wherein for a particular preselection comprising a set of N tracks including a preselection group box with track_group_id equal to a particular value indicated by thisTrackGroupId in the media data file, setting the value of the Track In Movie flags in the track header boxes of all these tracks to 0 is used to prevent the player from playing the set of tracks when one or both of the following conditions are true: there is no Track Group Description box including a preselection track group entry box with track_group_id equal to thisTrackGroupId, and N is less than numTracks in the preselection information box in the preselection track group entry box with track_group_id equal to thisTrackGroupId: Solution 21. A method according to any of Solutions 1 to 17, wherein the preselection includes a set of N tracks containing a preselection group box with track_group_id equal to a particular value indicated by thisTrackGroupId, and the Track in Movie flags in the track header boxes of all these tracks are set to 0 to prevent the player from playing the set of tracks in the preselection in the file when playing the set of tracks in the preselection would result in an incomplete experience if one or both of the following conditions are true: no Track Group Description box contains a preselection Track Group Entry Box with track_group_id equal to thisTrackGroupId, and N is less than numTracks in the preselection information box in the preselection Track Group Entry Box with track_group_id equal to thisTrackGroupId: Solution 22. A method according to any of Solutions 1 to 17, wherein the preselection includes a set of N tracks containing a preselection group box with track_group_id equal to a particular value indicated by thisTrackGroupId, and setting the value of the track_in_movie flag in the TrackHeaderBoxes of all these tracks is used to prevent the player from playing the set of tracks in the preselection in the file when playing the set of tracks would result in an incomplete experience if one or both of the following conditions are true: no Track Group Description Box contains a preselection Track Group Entry Box with track_group_id equal to thisTrackGroupId, and N is less than numTracks in the preselection information box in the preselection Track Group Entry Box with track_group_id equal to thisTrackGroupId: Solution 23. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions, which when executed by the processor cause the processor to perform any of the methods of solutions 1 to 22. Solution 24. A non-transitory computer-readable medium including a computer program product for use by a video coding device, the computer program product including computer-executable instructions stored on the non-transitory computer-readable medium that, when executed by a processor, causes the video coding device to perform any of the methods of Solutions 1 to 22. Solution 25. A non-transitory computer-readable recording medium storing a video bitstream generated by a method performed by a video processing device, the method including: determining a value of an in-movie track flag for a track in a media data file, the value of the in-movie track flag being equal to 0 when there is no pre-selection in the media data file including only tracks; and generating a bitstream based on the determination. Solution 26. A method for storing a video bitstream, comprising: determining a value of an in-movie track flag for a track in a media data file, the value of the in-movie track flag being equal to 0 when there is no pre-selection in the media data file including only tracks; generating a bitstream based on the determination; and storing the bitstream in a non-transitory computer-readable recording medium. Solution 27. A method, apparatus or system as described herein.
[0113] The following additional solutions illustrate example implementations of the techniques discussed in the previous section. Solution 1. A method for processing video data, comprising: determining that playing only the track will result in an incomplete experience, wherein a track_in_movie flag is set to 0 to prevent the player from playing only the track; and converting between video media data and a media data file based on the track_in_movie flag. Solution 2. The method according to Solution 1, wherein the media data file includes a preselection track group entry box (PreselectionTrackGroupEntryBox), which is a container box for a preselection information box (PreselectionInformationBox). Solution 3. The method according to Solution 2, where all attributes that uniquely qualify as a preselection shall be present in the PreselectionTrackGroupEntryBox of the preselection. Solution 4. The method according to Solution 3, wherein attributes signaled in the PreselectionTrackGroupEntryBox take precedence over attributes signaled in the contribution tracks. Solution 5. The method according to Solution 4, wherein the preselection is characterized by language, type or media specific attributes, audio rendering indication, object interactivity, or channel layout. Solution 6. The method according to Solution 5, wherein the PreselectionTrackGroupEntryBox describes only track groups identified by track_group_type equal to prse. Solution 7. The method according to Solution 1, wherein for a track containing a preselection group box (PreselectionGroupBox), the value of the track_in_movie flag in the track's TrackHeaderBox (TrackHeaderBox) is equal to 0 when there is no preselection in the file that contains only that track. Solution 8. The method of Solution 1, wherein when playing a Track without processing any PreselectionGroupBoxes contained in the Track would result in an incomplete experience, the track_in_movie flag in the TrackHeaderBox is set to 0 to prevent players that do not understand PreselectionGroupBox from playing the Track. Solution 9. The method described in Solution 1, where setting the track_in_movie flag in the TrackHeaderBox to 0 can be used to prevent players that do not understand PreselectionGroupBox from playing a track when playing a track without processing any PreselectionGroupBoxes it contains would result in an incomplete experience. Solution 10. The method according to Solution 1, wherein, for a particular preselection in the file containing a set of tracks containing a PreselectionGroupBox with a track group identifier (track_group_id) equal to a particular value indicated by thisTrackGroupId, when there is no Track Group Description Box (TrackGroupDescriptionBox) containing a PreselectionGroupBox with track_group_id equal to thisTrackGroupId, the value of the track_in_movie flag in the TrackHeaderBox (TrackHeaderBox) of all these tracks is set equal to 0. Solution 11. The method according to Solution 1, wherein for a particular preselection in the file containing a set of tracks containing preselection group boxes (PreselectionGroupBoxes) with a track group identifier (track_group_id) equal to a particular value indicated by thisTrackGroupId, when there is no track group description box (TrackGroupDescriptionBox) containing a preselection track group entry box (PreselectionTrackGroupEntryBox) with track_group_id equal to thisTrackGroupId, the value of the track_in_movie flag in the track header boxes (TrackHeaderBoxes) of all these tracks should be set to 0. Solution 12. For a particular preselection in a file containing a set of tracks containing preselection group boxes (PreselectionGroupBoxes) with a track group identifier (track_group_id) equal to a particular value indicated by thisTrackGroupId, when there is no TrackGroupDescriptionBox (TrackGroupDescriptionBox) containing a preselection Track Group Entry Box (PreselectionTrackGroupEntryBox) with track_group_id equal to thisTrackGroupId, setting the value of the track_in_movie flag in the TrackHeaderBoxes (TrackHeaderBoxes) of all these tracks to 0 can be used to prevent a player from playing the set of tracks. Solution 13. A method as in Solution 1, wherein if the number of tracks in a file containing preselection group boxes (PreselectionGroupBoxes) with a track group identifier (track_group_id) equal to a particular value indicated by thisTrackGroupId is less than the number of tracks (numTracks) in the preselection information boxes (PreselectionInformationBox) in the preselection track group entry boxes (PreselectionTrackGroupEntryBox) whose track_group_id is equal to thisTrackGroupId, then the value of the track_in_movie flag in the track header boxes (TrackHeaderBoxes) of all these tracks is equal to 0. Solution 14. The method according to Solution 1, wherein when the number of tracks in a file containing preselection group boxes (PreselectionGroupBoxes) with a track group identifier (track_group_id) equal to a particular value indicated by thisTrackGroupId is less than the number of tracks (numTracks) in the preselection information boxes (PreselectionInformationBox) in the preselection track group entry boxes (PreselectionTrackGroupEntryBox) whose track_group_id is equal to thisTrackGroupId, the value of the track_in_movie flag in the track header boxes (TrackHeaderBoxes) of all these tracks should be set to 0. Solution 15. The method of Solution 1, wherein when the number of tracks in a file containing preselection group boxes (PreselectionGroupBoxes) with a track group identifier (track_group_id) equal to a particular value indicated by thisTrackGroupId is less than the number of tracks (numTracks) in the preselection information boxes (PreselectionInformationBox) in the preselection track group entry boxes (PreselectionTrackGroupEntryBox) with track_group_id equal to thisTrackGroupId, setting the value of the track_in_movie flag in the track header boxes (TrackHeaderBoxes) of all these tracks to 0 can be used to prevent a player from playing the set of tracks. Solution 16. The method according to Solution 1, in which for a particular preselection in a file containing a set of N tracks containing preselection group boxes (PreselectionGroupBoxes) with a track group identifier (track_group_id) equal to a particular value indicated by the thisTrackGroupId, the value of the track_in_movie flag in the track header boxes (TrackHeaderBoxes) of all these tracks shall be set to 0 if one or both of the following conditions are true: there is no TrackGroupDescriptionBox containing a preselection TrackGroup EntryBox (PreselectionTrackGroupEntryBox) with track_group_id equal to thisTrackGroupId, or N is less than the number of tracks (numTracks) in the preselection Information Box (PreselectionInformationBox) in the PreselectionTrackGroupEntryBox with track_group_id equal to thisTrackGroupId. Solution 17. The method according to Solution 1, in which for a particular preselection in a file containing a set of N tracks containing preselection group boxes (PreselectionGroupBoxes) with a track group identifier (track_group_id) equal to a particular value indicated by the thisTrackGroupId, the value of the track_in_movie flag in the track header boxes (TrackHeaderBoxes) of all these tracks shall be set to 0 if one or both of the following conditions are true: there is no TrackGroupDescriptionBox containing a preselection Track Group Entry Box (PreselectionTrackGroupEntryBox) with track_group_id equal to thisTrackGroupId, or N is less than the number of tracks (numTracks) in the preselection Information Box (PreselectionInformationBox) in the PreselectionTrackGroupEntryBox with track_group_id equal to thisTrackGroupId. Solution 18. The method of Solution 1, wherein for a particular preselection in a file containing a set of N tracks containing preselection group boxes (PreselectionGroupBoxes) with a track group identifier (track_group_id) equal to a particular value indicated by a thisTrackGroupId, setting to 0 the value of the track_in_movie flag in the track header boxes (TrackHeaderBoxes) of all these tracks may be used to prevent a player from playing the set of tracks when one or both of the following conditions are true: there is no TrackGroupDescriptionBox containing a preselection Track Group Entry Box (PreselectionTrackGroupEntryBox) with track_group_id equal to thisTrackGroupId, or N is less than the number of tracks (numTracks) in the preselection Information Box (PreselectionInformationBox) in the PreselectionTrackGroupEntryBox with track_group_id equal to thisTrackGroupId. Solution 19. A non-transitory computer-readable recording medium storing a bitstream of video generated by a method performed by a video processing device, the method including: determining that playing only the track would result in an incomplete experience, wherein a track_in_movie flag is set to 0 to prevent a player from playing only the track; and generating the bitstream based on the determination. Solution 20. A method for storing a bitstream of a video, comprising: determining that playing only the track would result in an incomplete experience, wherein a track_in_movie flag is set to 0 to prevent the player from playing only the track; converting between video media data and a media data file based on the track_in_movie flag; and storing the bitstream on a non-transitory computer-readable recording medium.
[0114] In this document, the term "video processing" may refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm may be applied during the conversion of a pixel representation of a video to a corresponding bitstream representation, or vice versa. The bitstream representation of a current video block may correspond to bits that are co-located or spread to different locations in the bitstream, for example, as defined by a syntax. For example, a macroblock may be encoded in terms of transformed coded error residual values, and also using bits in a header and other fields in the bitstream. Furthermore, during conversion, the decoder may parse the bitstream with the knowledge that some fields may or may not be present based on a decision, as described in the above solution. Similarly, the encoder may determine whether a particular syntax field is included or not, and generate a coded representation by including or excluding the syntax field from the coded representation accordingly.
[0115] The disclosed and other solutions, examples, embodiments, modules, and functional operations described in this document can be implemented in digital electronic circuitry, or computer software, firmware, or hardware, including the structures disclosed in this document and their structural equivalents, or in a combination of one or more of them. The disclosed and other embodiments can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer-readable medium for controlling the operation of or by a data processing apparatus. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition affecting a machine-readable propagated signal, or a combination of one or more of them. The term "data processing apparatus" encompasses all apparatus, devices, and machines for processing data, including, by way of example, a programmable processor, a computer, or multiple processors or computers. An apparatus can include, in addition to hardware, code that creates an environment for the execution of the computer program in question, such as code constituting a processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, for example a machine-generated electrical, optical, or electromagnetic signal generated to encode information for transmission to a suitable receiver device.
[0116] A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in several refined files (e.g., files that store one or more modules, subprograms, or portions of code). A computer program can be deployed to be executed on several computers that are located on one computer or at one site, or distributed across several sites and interconnected by a communications network.
[0117] The processes and logic flows described herein may be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows may also be performed by, and an apparatus may be implemented as, special purpose logic circuitry, such as an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
[0118] Processors suitable for executing a computer program include, by way of example, both general purpose and special purpose microprocessors, and any one or more processors of any kind of digital computer. Typically, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Typically, a computer will also include, or be operatively coupled to receive data from, transfer data to, or both of, one or more mass storage devices for storing data, e.g., magnetic disks, magneto-optical disks, or optical disks. However, a computer need not have such devices. Suitable computer-readable media for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including, by way of example, semiconductor memory devices, which are erasable programmable read-only memories (EPROMs), electrically erasable programmable read-only memories (EEPROMs), and flash memory devices, magnetic disks, which are internal hard disks or removable disks, magneto-optical disks, and compact disk read-only memories (CD ROMs) and digital versatile disk read-only memories (DVD-ROMs) disks. The processor and memory may be supplemented by, or incorporated in, special purpose logic circuitry.
[0119] Although this patent document contains many details, these should not be construed as limitations on the scope of any subject matter or what may be claimed, but rather as descriptions of features that may be specific to certain embodiments of a particular technique. Certain features described in this patent document in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Furthermore, although features may be described above as acting in a particular combination and may initially be claimed in their own right, one or more features from a claimed combination may, in some cases, be deleted from the combination, and the claimed combination may be directed to a subcombination or a variation of the subcombination.
[0120] Similarly, although the figures depict acts in a particular order, this should not be understood as requiring such acts to be performed in a particular order or sequentially, or to perform all of the acts depicted, to achieve desired results.Furthermore, the separation of various system components in the embodiments described in this patent document should not be understood as requiring such separation in all embodiments.
[0121] Only a few implementations and examples have been described; other implementations, extensions and variations can be made based on what is described and shown in this patent document.
[0122] A first component is directly coupled to a second component when there are no intervening components other than lines, traces, or other media between the first and second components. A first component is indirectly coupled to a second component when there are intervening components other than lines, traces, or other media between the first and second components. The term "coupled" and variations thereof include both direct and indirect coupling. Use of the term "about" means a range that includes ±10% of the succeeding number, unless otherwise stated.
[0123] Although several embodiments are provided in this disclosure, it should be understood that the disclosed systems and methods may be embodied in many other specific forms without departing from the spirit or scope of the disclosure. The examples should be considered illustrative and not limiting, and the intention should not be limited to the details given herein. For example, various elements or components may be combined or integrated into another system, or certain features may be omitted or not implemented.
[0124] Additionally, the techniques, systems, subsystems, and methods described and illustrated individually or separately in various embodiments may be combined or integrated with other systems, modules, technologies, or methods without departing from the scope of the present disclosure. Other items shown or described as being coupled may be directly connected, or may be indirectly coupled or in communication electrically, mechanically, or otherwise through some interface, device, or intermediate component. Other examples of changes, substitutions, and alterations will be ascertainable by one of ordinary skill in the art and may be made without departing from the spirit and scope disclosed herein.
Claims
1. 1. A method for processing video data, comprising the steps of: determining that playing only the track would result in an incomplete experience, where a track_in_movie flag is set to 0 to prevent a player from playing only the track; and converting between video media data and a media data file based on the track_in_movie flag; A method in which, for a track that includes a preselection group box (PreselectionGroupBox), the value of the track_in_movie flag in the track's trackHeaderBox (TrackHeaderBox) is equal to 0 when there is no preselection in the file that includes only that track.
2. The method of claim 1 , wherein the media data file includes a preselection track group entry box (PreselectionTrackGroupEntryBox) for preselection, the PreselectionTrackGroupEntryBox being a container box for a preselection information box (PreselectionInformationBox).
3. The method of claim 2 , wherein all attributes that uniquely qualify as a preselection are present in the PreselectionTrackGroupEntryBox of the preselection.
4. The method of claim 3 , wherein attributes signaled in the PreselectionTrackGroupEntryBox take precedence over attributes signaled in a contribution track.
5. The method of claim 4 , wherein the preselection is characterized by language, type or media specific attributes, audio rendering display, object interactivity, or channel layout.
6. The method of claim 5 , wherein the PreselectionTrackGroupEntryBox describes only track groups identified by a track group type (track_group_type) equal to prse.
7. 2. The method of claim 1, wherein when playing a track without processing any PreselectionGroupBoxes contained in the track would result in an incomplete experience, the track_in_movie flag in a TrackHeaderBox is set to 0 to prevent players that do not understand the PreselectionGroupBox from playing the track.
8. 2. The method of claim 1, wherein when playing a track without processing any PreselectionGroupBoxes contained in the track would result in an incomplete experience, the track_in_movie flag in a TrackHeaderBox is set to 0 to prevent players that do not understand the PreselectionGroupBox from playing the track.
9. 2. The method of claim 1, wherein for a particular preselection in a file that includes a set of tracks that include a preselection group box (PreselectionGroupBox) with a track group identifier (track_group_id) equal to a particular value indicated by a distrack group identifier (thisTrackGroupId), when there is no track group description box (TrackGroupDescriptionBox) that includes a PreselectionGroupBox with track_group_id equal to thisTrackGroupId, the value of the track_in_movie flag in the track header box (TrackHeaderBox) of all these tracks is set equal to 0.
10. 2. The method of claim 1, wherein for a particular preselection in a file that includes a set of tracks that include a preselection group box (PreselectionGroupBoxes) with a track group identifier (track_group_id) equal to a particular value indicated by a distrack group identifier (thisTrackGroupId), when there is no track group description box (TrackGroupDescriptionBox) that includes a preselection track group entry box (PreselectionTrackGroupEntryBox) with said track_group_id equal to thisTrackGroupId, the value of the track_in_movie flag in the track header boxes (TrackHeaderBoxes) of all these tracks is set to 0.
11. 2. The method of claim 1, wherein for a particular preselection in a file that includes a set of tracks that include preselection group boxes (PreselectionGroupBoxes) with a track group identifier (track_group_id) equal to a particular value indicated by a distrack group identifier (thisTrackGroupId), when there is no track group description box (TrackGroupDescriptionBox) that includes a preselection track group entry box (PreselectionTrackGroupEntryBox) with said track_group_id equal to thisTrackGroupId, the value of the track_in_movie flag in the track header boxes (TrackHeaderBoxes) of all these tracks is set to 0 to prevent a player from playing the set of tracks.
12. 2. The method of claim 1, wherein if the number of tracks in a file containing preselection group boxes (PreselectionGroupBoxes) having a track group identifier (track_group_id) equal to a particular value indicated by a disTrack Group Identifier (thisTrackGroupId) is less than the number of tracks (numTracks) in a preselection information box (PreselectionInformationBox) in a preselection Track Group Entry Box (PreselectionTrackGroupEntryBox) whose track_group_id is equal to thisTrackGroupId, then the value of the track_in_movie flag in the Track Header Boxes (TrackHeaderBoxes) of all such tracks shall be equal to 0.
13. 2. The method of claim 1, wherein if the number of tracks in a file that contain a preselection group box (PreselectionGroupBoxes) with a track group identifier (track_group_id) equal to a particular value indicated by a dist track group identifier (thisTrackGroupId) is less than the number of tracks (numTracks) in a preselection information box (PreselectionInformationBox) in a preselection track group entry box (PreselectionTrackGroupEntryBox) whose track_group_id is equal to thisTrackGroupId, then the value of the track_in_movie flag in the track header box (TrackHeaderBoxes) of all these tracks is set to 0.
14. The number of tracks in the file that contain a preselection group box (PreselectionGroupBoxes) with a track group identifier (track_group_id) equal to the particular value indicated by the disc track group identifier (thisTrackGroupId) is the number of tracks in the preselection track group entry box (PreselectionGroupBoxes) with said track_group_id equal to the particular value indicated by the disc track group identifier (thisTrackGroupId).
2. The method of claim 1, wherein when the number of tracks (numTracks) in a PreselectionInformationBox in a PreselectionTrackGroupEntryBox is less than x, the values of the track_in_movie flag in the TrackHeaderBoxes of all these tracks are set to 0 to prevent a player from playing the set of tracks.
15. For a particular preselection containing a set of N tracks containing preselection group boxes (PreselectionGroupBoxes) with a track group identifier (track_group_id) equal to a particular value indicated by the thisTrackGroupId in the file, the following condition is satisfied: There is no TrackGroupDescriptionBox that contains a PreselectionTrackGroupEntryBox whose track_group_id is equal to thisTrackGroupId, or 2. The method of claim 1, wherein if N is true for one or both of the following, then the value of the track_in_movie flag in the Track Header Boxes of all these tracks is set to 0: N is less than the number of tracks (numTracks) in the PreselectionInformationBox in the PreselectionTrackGroupEntryBox whose track_group_id is equal to thisTrackGroupId.
16. For a particular preselection containing a set of N tracks containing preselection group boxes (PreselectionGroupBoxes) with a track group identifier (track_group_id) equal to a particular value indicated by the thisTrackGroupId in the file, the following condition is satisfied: There is no TrackGroupDescriptionBox that contains a PreselectionTrackGroupEntryBox whose track_group_id is equal to thisTrackGroupId, or 2. The method of claim 1, wherein when one or both of the following are true: N is less than the number of tracks (numTracks) in a PreselectionInformationBox in a PreselectionTrackGroupEntryBox whose track_group_id is equal to thisTrackGroupId, then the value of the track_in_movie flag in the TrackHeaderBoxes of all these tracks is set to 0.
17. For a particular preselection containing a set of N tracks containing preselection group boxes (PreselectionGroupBoxes) with a track group identifier (track_group_id) equal to a particular value indicated by the thisTrackGroupId in the file, the following condition is satisfied: There is no TrackGroupDescriptionBox that contains a PreselectionTrackGroupEntryBox whose track_group_id is equal to thisTrackGroupId, or 2. The method of claim 1, wherein when one or both of the following are true: N is less than the number of tracks (numTracks) in a PreselectionInformationBox in a PreselectionTrackGroupEntryBox whose track_group_id is equal to thisTrackGroupId, then the value of the track_in_movie flag in the TrackHeaderBoxes of all these tracks is set to 0 to prevent a player from playing the set of tracks.
18. 1. An apparatus for processing video data comprising a processor and a non-transitory memory having instructions, the instructions, when executed by the processor, causing the processor to: determining that playing only the track would result in an incomplete experience, where a track_in_movie flag is set to 0 to prevent a player from playing only the track; converting between video media data and a media data file based on the track_in_movie flag; The apparatus, wherein for a track that includes a preselection group box (PreselectionGroupBox), when there is no preselection in the file that includes only that track, the value of the track_in_movie flag in the track header box (TrackHeaderBox) of that track is equal to 0.
19. A method for storing a bitstream of video, comprising the steps of: determining that playing only the track would result in an incomplete experience, where a track_in_movie flag is set to 0 to prevent a player from playing only the track; generating the bitstream based on the determination; and storing the bitstream on a non-transitory computer-readable recording medium. A method in which, for a track that includes a preselection group box (PreselectionGroupBox), the value of the track_in_movie flag in the track's TrackHeaderBox (TrackHeaderBox) is equal to 0 when there is no preselection in the file that includes only that track.
Citation Information
Patent Citations
Designing a Multilayer Video File Format
JP2016540416A
Playback apparatus, playback method, and program
JP2018182772A
Method, device, and computer program for improving encapsulation of media content
WO2021122850A1