US20150085917A1 - Method for storing image data, method for parsing image data, and an apparatus for using the same - Google Patents

Method for storing image data, method for parsing image data, and an apparatus for using the same Download PDF

Info

Publication number
US20150085917A1
US20150085917A1 US14/398,559 US201314398559A US2015085917A1 US 20150085917 A1 US20150085917 A1 US 20150085917A1 US 201314398559 A US201314398559 A US 201314398559A US 2015085917 A1 US2015085917 A1 US 2015085917A1
Authority
US
United States
Prior art keywords
nal
nal unit
configuration record
decoder configuration
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US14/398,559
Other versions
US10097841B2 (en
Inventor
Hendry Hendry
Jungsun KIM
Byeongmoon Jeon
Sangoh Jeong
Jinpil Kim
Kyungho Kim
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LG Electronics Inc
Original Assignee
LG Electronics Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LG Electronics Inc filed Critical LG Electronics Inc
Priority to US14/398,559 priority Critical patent/US10097841B2/en
Assigned to LG ELECTRONICS INC. reassignment LG ELECTRONICS INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: JEONG, SANGOH, JEON, BYEONGMOON, KIM, JINPIL, Kim, Jungsun, HENDRY, HENDRY, KIM, KYUNGHO
Publication of US20150085917A1 publication Critical patent/US20150085917A1/en
Application granted granted Critical
Publication of US10097841B2 publication Critical patent/US10097841B2/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/188Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a video data packet, e.g. a network abstraction layer [NAL] unit
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8451Structuring of content, e.g. decomposing content into time segments using Advanced Video Coding [AVC]

Definitions

  • the present invention relates to video compression technology, and more specifically, to the file format of compressed video information.
  • High-efficiency video compression techniques may be put to use to effectively transmit, store, and replay high-quality video information.
  • inter prediction and intra prediction may be used.
  • information of other pictures may be referenced to predict a pixel value of the current picture, and in the intra prediction method, a pixel value is predicted using the correlation between pixels in the same picture.
  • the encoding apparatus and decoding apparatus for compression-processing and reproducing video information compress and process a high volume of video information by a diversity of methods as described above.
  • the present invention aims to provide a method and apparatus of encoding information on a high volume of high-quality video, storing information for reconstructing (decoding) the encoded video and transmitting the stored information efficiently.
  • the present invention aims to provide a method and apparatus of configuring an available file format which is supporting HEVC (High Efficiency Video Coding).
  • HEVC High Efficiency Video Coding
  • the present invention aims to provide a method and apparatus of effectively configuring a decoding configuration record in the file format.
  • An embodiment according to the present invention is a method of storing video information which comprises encoding video information; and storing an NAL (Network Abstraction Layer) unit including the encoded video information in a decoder configuration record, wherein the decoder configuration record may store NAL units per NAL unit type.
  • NAL Network Abstraction Layer
  • Another embodiment according to the present invention is a method of parsing video information which comprises parsing a decoder configuration record; and parsing an NAL unit based on the parsed decoder configuration record, wherein the decoder configuration record may store NAL units per NAL unit type.
  • Still another embodiment according to the present invention is an apparatus of storing video information which comprises an encoding unit encoding video information; and a storage unit storing an NAL (Network Abstraction Layer) unit including the encoded video information in a decoder configuration record, wherein the decoder configuration record may store NAL units per NAL unit type.
  • NAL Network Abstraction Layer
  • Yet still another embodiment according to the present invention is an apparatus of parsing video information which comprises a parsing unit parsing a decoder configuration record; and a decoding unit parsing an NAL unit based on the parsed decoder configuration record, wherein the decoder configuration record may store NAL units per NAL unit type.
  • information for encoding and decoding a high volume of high-quality video information may be effective stored and transferred.
  • an available file format may be configured by supporting HEVC (High Efficiency Video Coding).
  • HEVC High Efficiency Video Coding
  • a decoding configuration record in the file format may be effectively configured so that the NAL unit information may be identified at a system level.
  • FIG. 1 illustrates an example media file format according to the present invention.
  • FIG. 2 is a flowchart schematically illustrating a method of storing video information according to the present invention.
  • FIG. 3 is a flowchart schematically illustrating a method of parsing video information according to the present invention.
  • FIG. 4 is a block diagram schematically illustrating a configuration of a video information storage apparatus according to the present invention.
  • FIG. 5 is a block diagram schematically illustrating a configuration of a video information parsing apparatus according to the present invention.
  • the elements in the drawings are shown independently for ease of description on the different features from each other in the video encoding apparatus/decoding apparatus and should not be construed as meaning that the elements are implemented in separate pieces of hardware or software.
  • two or more may be combined to configure a single element, and any one element may be divided into multiple elements.
  • Embodiments where the elements are combined and/or each element is divided belong to the scope of the present invention without departing from the gist of the present invention.
  • the conventional file formats to process video information need to be modified or renewed to process high-volume/high-quality video information.
  • an issue is a format in which the video streams are stored to allow for effective support for the video encoding/decoding methods that are in discussion to raise video quality and compression efficiency.
  • decoder configuration record according to the present invention and the video information and file format based on the decoder configuration record are described below in detail.
  • HEVC High Efficiency Video Coding
  • HEVC content the high-volume, high-quality content processed by adopting HEVC
  • an extension of a file format considering the parameter set may be used, which is available for HEVC to the existing capacity of the media file format based on the ISO (International Organization for Standardization).
  • FIG. 1 illustrates an example media file format according to the present invention.
  • the media file format according to the present invention may be an extension to the ISO-based media file format.
  • the HEVC-supportive file 100 may include recursive boxes.
  • the file 100 has an object-oriented structure consisting of a series of objects called boxes. All the data is contained in the boxes, and each box may be defined as a unique identifier and a length.
  • the file 100 may include an FTYP 110 , an MOOV 120 , and an MDAT 130 . Further, although not shown, the file 100 may include tracks respectively corresponding to samples.
  • the FTYP 110 is a file type and contains information regarding a file type.
  • the FTYP 110 is positioned at the beginning of the file 100 .
  • the MOOV 120 is a box containing header information of the file 100 .
  • the MOOV 120 may include a decoder configuration record as decoder configuration information.
  • the HEVC visual sample entry contains the HEVC configuration box, and the HEVC configuration box may contain a HEVC decoder configuration record.
  • the MOOV 120 may include a HEVC visual sample entry or a HEVC configuration box. Further, the MOOV 120 may be a HEVC visual sample entry or a HEVC configuration box. Accordingly, in the example illustrated in FIG. 1 , for ease of description, the MOOV 120 includes the HEVC decoder configuration record 140 .
  • the MDAT 130 includes payload data. Accordingly, encoded data for a video file is delivered to this box. Referring to FIG. 1 , the MDAT 130 includes samples.
  • the sample may mean an access unit.
  • Sample X may be an Xth picture.
  • the above-described decoder configuration record is a record regarding an initial configuration of the decoder, and the decoder parses information corresponding to the configuration.
  • the decoder configuration record includes an NAL (Network Abstraction Layer) unit to which each sample belongs and a length field to indicate the length of a parameter set.
  • NAL Network Abstraction Layer
  • the NAL unit may be of a syntax structure including bytes containing data of an RSRP (Raw Byte Sequence Payload) type, which is, as necessary, deployed together with an indicator on the type of subsequent data and a byte to prevent competition.
  • RSRP Raw Byte Sequence Payload
  • the decoder configuration record may be externally framed. Accordingly, the file header and the file payload may be physically distinguished from each other.
  • Parameter sets to support HEVC include a video parameter set, a sequence parameter set, and a picture parameter set.
  • a slice including encoded block data may refer to the picture parameter set including the decoding parameters
  • the picture parameter set may refer to the sequence parameter set to refer to the sequence level parameter.
  • the sequence parameter set may likewise refer to the video parameter set to refer to the video level parameter.
  • a video stream may be represented by one video track in the file.
  • the elementary stream is an array or set of NAL units.
  • the elementary stream may be defined a video elementary stream and a video and parameter set elementary stream.
  • the video elementary stream does not include a parameter set, and all of the parameter sets are included in the sample entry(ies).
  • the video and parameter set elementary stream may include a parameter set and may include parameter sets included in the sample entry(ies).
  • the parameter set used in a picture is transmitted earlier than the sample including the picture or the sample for the picture.
  • the sample entry when the video parameter set, the sequence parameter set, and the picture parameter set may be stored only in the sample entry for the video stream to which a particular sample entry applies, may be denoted hvc1, and the sample entry when the video parameter set, the sequence parameter set, and the picture parameter set may be stored in the sample entry and the samples is denoted hev1, and as necessary, two cases may be distinguished from each other.
  • the file format needs to be modified to support HEVC, and in particular, the decoder configuration record regarding the decoder initial configuration needs to be modified.
  • Table 1 shows an example decoder configuration record used to support video encoding/decoding according to the prior art.
  • the conventional video encoding/decoding method is denoted AVC (Advanced Video Coding) to be distinguished from HEVC.
  • the AVC-supportive decoder configuration record is referred to as AVCDecoderConfigurationRecord.
  • AVCDecoderConfigurationRecord contains information (configurationVersion) to indicate the configuration version, information (AVCProfileIndication) to indicate the profile, information (profile compatibility) to indicate profile compatibility, and information (AVCLevelIndication) to indicate the level.
  • the profile refers to a sub group to which among encoding techniques a decoder configuration applies, and the level refers to a constraint according to the same.
  • the length (number of bits) assigned to each information is specified.
  • Table 2 shows an example decoder configuration record supportive of HEVC.
  • the HEVC-supportive decoder configuration record is denoted HEVCDecoderConfigurationRecord.
  • HEVCDecoderConfigurationRecord contains information (configurationVersion) to indicate the configuration version.
  • HEVCDecoderConfigurationRecord contains information regarding a sub group of techniques/tools applicable to HEVC and constraints that apply to the techniques/tools. Referring to Table 2, an example in which profileIndication as information to indicate the profile, profileCompatibility as information to indicate profile compatibility, and LevelIndication as information to indicate the level, are described.
  • the profile indicates a tool or algorithm available in HEVC.
  • the level indicates constraints as to particular parameters of a bit stream.
  • HEVCDecoderConfigurationRecord may also contain information regarding a tier in addition to the profile and level, as constraint/restriction or configuration.
  • the tier indicates information regarding the maximum bit rate and CPB (Coded Picture Buffer) capacities.
  • the bit stream does not have values different from the profile information and level information included in HEVCDecoderConfigurationRecord.
  • the information to indicate profile compatibility, profileCompatibility, indicates whether the encoded video sequence (CVS) complies with the profile.
  • HEVCDecoderConfigurationRecord includes information (chromaFormat) to indicate the format of the chroma component, information (bitDepthLumaMinus8) to indicate the bit depth of the luma component, and information (bitDepthChromaMinus8) to indicate the bit depth of the chroma component.
  • chromaFormat contains information indicating the chroma format for a stream to which a corresponding decoder configuration record applies.
  • the chroma format for a video in a stream may be indicated by a chroma format indicator.
  • the value of the chroma format indicator being 0 may indicate monochrome
  • the value being 1 may indicate 4:2:0 sampling for the three components (Y, Cr, Cb) of color
  • the value being 2 may indicate 4:2:2 sampling on the three components (Y, Cr, Cb) of color
  • the value being 3 may indicate 4:4:4 sampling on the three components (Y, Cr, Cb) of color.
  • bitDepthLumaMinus8 contains information to specify the bit depth of a luma sample array for a stream to which a corresponding decoder configuration record applies.
  • the bit depth of the luma quantization parameter range offset may also be specified by the information to specify the bit depth of the luma sample array.
  • bitDepthChromaMinus8 contains information to specify the bit depth of a chroma sample array for a stream to which a corresponding decoder configuration record applies. At this time, the bit depth of the chroma sample quantization parameter range offset may also be specified based on the information to specify the bit depth of the chroma sample array.
  • HEVCDecoderConfigurationRecord includes information regarding a frame rate.
  • HEVCDecoderConfigurationRecord may include information (avgFrameRate) to indicate an average frame rate value, constant frame rate information (constantFrameRate) to configure a frame rate value to constantly replay a video, and information (numTemporalLayers) to indicate the number of temporal layers.
  • avgFrameRate indicates an average frame rate for a stream to which a corresponding decoder configuration record applies. avgFrameRate being 0 indicates an unspecified average frame rate.
  • constantFrameRate indicates whether a frame rate is constant for a stream to which a corresponding decoder configuration record applies. For example, constantFrameRate being 0 indicates that the stream may or may not have a constant frame rate.
  • constantFrameRate being 1 indicates that the stream has a constant frame rate.
  • constantFrameRate being 2 indicates that the representation of each temporal layer in the stream has a constant frame rate.
  • numTemporalLayers includes information to specify a temporal layer coefficient of a stream to which a corresponding decoder configuration record applies. For example, numTemporalLayers being 0 indicates whether the stream is temporally scalable, and numTemporalLayers being 1 indicates that the stream is not temporally scalable. numTemporalLayers being larger than 1 may indicate that the stream is temporally scalable and that the same number of temporal layers as numTemporalLayers are included.
  • HEVCDecoderConfigurationRecord may include information, lengthSizeMinusOne, regarding the NAL unit length of the HEVC video sample in a stream to which a corresponding decoder configuration record applies.
  • lengthSizeMinusOne may represent the length of the NAL unit length (NALUnitLength) field of the HEVC video sample in the stream in bytes.
  • a one-bit size may be indicated as lengthSizeMinusOne being 0.
  • HEVCDecoderConfigurationRecord may contain information on the number of NAL units.
  • the number of NAL units of the stream to which a corresponding decoder configuration record applies may be specified through numInitializationNalus.
  • each NAL unit and the length of the NAL unit are specified by nalUnit and nalUnitLength, respectively.
  • the length of NAL unit may be specified in bytes.
  • the information regarding the chroma format (chroma_format), the information regarding the bit depth of the luma sample (bit_depth_luma_minus8), and the information on the bit depth of the chroma sample (bit_depth_luma_minus8) are conditionally transmitted as per profile information.
  • bit_depth_luma_minus8 In contrast, in HEVCDecoderConfigurationRecord, the syntax elements chroma_format, bit_depth_luma_minus8, and bit_depth_luma_minus8 are always unconditionally signaled.
  • HEVCDecoderConfigurationRecord unlike AVCDecoderConfigurationRecord, does not support SPS extension (Sequence Parameter Set extension: SequenceParameterSetExt).
  • the non-VCL (Non-Video Coding Layer) NAL unit may be stored in the payload, and may be stored in the decoder configuration record.
  • SPS Sequence Parameter Set
  • PPS Picture Parameter Set
  • an SEI Supplemental Enhancement Information
  • HEVCDecoderConfigurationRecord contrarily, all the non-VCL NAL units (for example, SPS, PPS, APS (Adaptation Parameter Set), SEI, etc.) are mixed in one array or in one initialization NAL unit.
  • non-VCL NAL units for example, SPS, PPS, APS (Adaptation Parameter Set), SEI, etc.
  • HEVCDecoderConfigurationRecord has different features from AVCDecoderConfigurationRecord.
  • the decoder configuration record for HEVC has also something that needs to be enhanced for effective video coding (encoding/decoding).
  • HEVCDecoderConfigurationRecord and its effects according to the present invention are described below in connection with specific embodiments of the present invention.
  • Table 3 only shows signaling constantFrameRate, numTemporalLayers, and lengthSizeMinusOne among the syntax elements shown in Table 2.
  • constantFrameRate is assigned with 1 bit
  • numTemporalLayers is assigned with 3 bits
  • lengthSizeMinusOne is assigned with 2 bits, with 2 bits assigned as reserved bits.
  • eight-bit string data is rendered to include three or more syntax elements.
  • one of the following two embodiments may be put to use.
  • all the syntax elements signaled in HEVCDecoderConfigurationRecord are aligned in units of eight bits. At this time, padding bits may be used for the syntax elements that do not have the size of eight-bit unit.
  • syntax elements whose size is insufficient to be eight bits or multiples thereof may add a padding bit before or behind the syntax elements.
  • the reserved bits may be used as the padding bits.
  • Table 4 shows an example of HEVCDecoderConfigurationRecord according to embodiment 1-1.
  • the reserved bit is added before the syntax element so that parsing/transmission may be carried out per syntax element in units of eight bits.
  • constantFrameRate being 0 indicates that the stream may or may not have a constant frame rate.
  • constantFrameRate being 1 indicates that the stream has a constant frame rate.
  • constantFrameRate being 2 indicates that the representation of each temporal layer in the stream has a constant frame rate.
  • parsing may be simply performed. Since syntax elements may be simply parsed in units of eight bits, a parser may be simply implemented.
  • one pass/one cycle parsing is made possible with an eight-bit parser.
  • the eight-bit parser parses syntax elements in the conventional HEVCDecoderConfigurationRecord, an additional process is required to extract the syntax elements, constantFrameRate, numTemporalLayers, and lengthSizeMinusOne.
  • application of embodiment 1-1 eliminates the need for an additional process.
  • the reserved bit is added before the syntax element so that transmission/parsing is performed in units of eight bits
  • the present invention is not limited thereto.
  • the reserved bit may be added behind the syntax element so that transmission/parsing for the syntax element is performed in units of eight bits.
  • parsing is performed in units of eight bits, for example, the present invention is not limited thereto.
  • the syntax element may be adapted to be transmitted/parsed in units of X bits.
  • a reserved bit may be added before or behind the syntax element so that transmission/parsing is performed in units of eight bits per syntax element.
  • HEVCDecoderConfigurationRecord In HEVCDecoderConfigurationRecord according to embodiment 1-2, a syntax element is signaled in a compact form, and use of reserved bits is minimized. The reserved bits may be used as the last means to allow the entire HEVCDecoderConfigurationRecord length to be byte-aligned.
  • Table 5 shows an example of HEVCDecoderConfigurationRecord according to embodiment 1-2.
  • the reserved bit is minimally used as necessary so that single syntax elements may be transmitted/parsed in units of eight bits.
  • the reserved bit may be added to a syntax element(s) that has(have) bits fewer than eight bits so that the syntax elements may be transmitted/parsed in units of eight bits.
  • HEVCDecoderConfigurationRecord Use of HEVCDecoderConfigurationRecord according to embodiment 1-2 enables compact signaling with a smaller number of bits as compared with using the conventional HEVCDecoderConfigurationRecord.
  • AVCDecoderConfigurationRecord of Table 1 SPS, PPS, APS, and SEI messages are being signaled in individual arrays, and in HEVCDecoderConfigurationRecord of Table 2, NAL units of VPS (Video Parameter Set), SPS (Sequence Parameter Set), and PPS (Picture Parameter Set) are mixed and signaled.
  • VPS Video Parameter Set
  • SPS Sequence Parameter Set
  • PPS Picture Parameter Set
  • an APS Adaptation Parameter Set adaptively available may be transmitted in HEVCDecoderConfigurationRecord as necessary.
  • HEVCDecoderConfigurationRecord is information to specify an initial configuration of a decoder
  • the NAL unit transmitted in HEVCDecoderConfigurationRecord is referred to as initialization NAL unit in this disclosure for ease of description.
  • the parser of HEVCDecoderConfigurationRecord should refer to the NAL unit header to be aware of the type of the initialization NAL unit parsed.
  • HEVCDecoderConfigurationRecord is configured to enable the information required to treat HEVC files to be available at the file format level.
  • the parser does not refer to the NAL unit header information or lower-level information and may recognize the type of NAL unit using only the information on HEVCDecoderConfigurationRecord.
  • the type of initialization NAL unit is signaled in HEVCDecoderConfigurationRecord. Specifically, in HEVCDecoderConfigurationRecord, information regarding the type and length of the initialization NAL unit per initialization NAL unit are transmitted in HEVCDecoderConfigurationRecord, and the corresponding initialization NAL unit is subsequently transmitted.
  • Table 6 shows an example of HEVCDecoderConfigurationRecord according to embodiment 2-1.
  • initialization NAL unit type indicator specifies the type of an associated initialization NAL unit.
  • initializationNalUnitType may indicate which one of the types each NAL unit per initialization NAL unit.
  • Table 7 shows an example table used to make the initializationNalUnitType value correspond to the initialization NAL unit type in case the type of initialization NAL unit transmitted in HEVCDecoderConfigurationRecord is SPS, PPS, APS, or SEI, according to the present invention.
  • the type of initialization NAL unit transmitted in HEVCDecoderConfigurationRecord is SPS, PPS, APS, or SEI, for example, the present invention is not limited thereto.
  • the adaptively used parameter set, APS is not used, and transmission of VPS may be needed instead.
  • Table 8 shows an example table used to make the initializationNalUnitType value correspond to the initialization NAL unit type in case the type of initialization NAL unit transmitted in HEVCDecoderConfigurationRecord is SPS, PPS, VPS, or SEI, according to the present invention.
  • the type of initialization NAL unit transmitted in HEVCDecoderConfigurationRecord may be one of VPS, SPS, PPS, APS, and SEI.
  • Table 9 shows an example table used to make the initializationNalUnitType value correspond to the initialization NAL unit type in case the type of initialization NAL unit transmitted in HEVCDecoderConfigurationRecord is VPS, SPS, PPS, APS, or SEI, according to the present invention.
  • the PPS is a syntax structure including a syntax element indicating parameter information applied to 0 or more pictures.
  • the syntax element included in the PPS may be referenced as required by the syntax element of the slice segment header.
  • the SPS (Sequence Parameter Set) is a syntax structure including a syntax element indicating parameter information applied to 0 or more coded video sequences.
  • the syntax element included in the SPS may be referenced as required by the syntax element in the PPS.
  • the VPS (Video Parameter Set) is a syntax structure including a syntax element indicating parameter information applied to 0 or more coded video sequences.
  • the syntax element included in the VPS may be referenced as required by the syntax element in the SPS.
  • the SEI (Supplemental Enhancement Information) message is information added to the bit stream to effectively use videos to fit for various purposes.
  • HEVCDecoderConfigurationRecord may indicate at the system level the type of each NAL unit transmitted in HEVCDecoderConfigurationRecord using any one of Tables 7 to 9.
  • the terminal at the receiving side may parse initializationNalUnitType in HEVCDecoderConfigurationRecord to grasp the type of a corresponding NAL unit according to the initializationNalUnitType value.
  • nalUnitLength indicates the length of initialization NAL unit indicated by initializationNalUnitType.
  • nalUnit is an initialization NAL unit indicated by initializationNalUnitType.
  • nalUnit may be one of SPS, PPS, APS, and SEI.
  • nalUnit may be any one of VPS, SPS, PPS, and SEI.
  • nalUnit may be one of VPS, SPS, PPS, APS, and SEI.
  • numInitializationNalus if the number of initialization NAL units included in HEVCDecoderConfigurationRecord is specified by numInitializationNalus, the type and length of the initialization NAL units are sequentially indicated as many as the number of initialization NAL units, and the corresponding initialization NAL units are transmitted.
  • Table 10 shows an example of HEVCDecoderConfigurationRecord according to embodiment 2-1, in case information regarding the initialization NAL unit transmitted in HEVCDecoderConfigurationRecord is simply represented using ‘nalUnit’ instead of ‘initializationNalUnit.’
  • the NAL unit type is indicated per initialization NAL unit
  • the present invention is not limited thereto.
  • the length of each initialization NAL unit may be indicated per NAL unit type, and the initialization NAL unit may be transmitted.
  • Table 11 shows another example of HEVCDecoderConfigurationRecord according to embodiment 2-1.
  • numOfNalUnitType indicates the number of NAL unit types indicated in HEVCDecoderConfigurationRecord
  • NAL_unit_type specifies an NAL unit type
  • numNalus indicates the number of initialization NAL units corresponding to the NAL unit type specified by NAL_unit_type.
  • each initialization NAL unit belonging to the NAL unit type is sequentially indicated as many as the number of the initialization NAL units corresponding to the NAL unit type specified by NAL_unit_type, and the initialization NAL unit is transmitted.
  • the present invention is not limited thereto.
  • the present invention also applies to the case where the initialization NAL units corresponding to the NAL unit type(s) are included in one or more NAL unit arrays.
  • Table 12 shows still another example of HEVCDecoderConfigurationRecord according to embodiment 2-1.
  • numArrays indicates the number of the arrays of the initialization NAL units of the type(s) indicated in HEVCDecoderConfigurationRecord.
  • array_completeness indicates whether the initialization NAL unit(s) corresponding to the initialization NAL unit type in HEVCDecoderConfigurationRecord is(are) included in one array (of NAL units). For example, array_completeness being 1 indicates that all the NAL units of a given type are included in a following array, and array_completeness being 0 indicates that among the initialization NAL units of a given type, the initialization NAL units that are not in the following array are present in the stream.
  • numNalus indicates the number of initialization NAL units of the NAL unit type in HEVCDecoderConfigurationRecord for the stream to which HEVCDecoderConfigurationRecord applies.
  • the NAL unit type and the number of initialization NAL units corresponding to the NAL unit type are indicated per initialization NAL unit array. At this time, as many as the number of initialization NAL units corresponding to the NAL unit type, the length of each initialization NAL unit is sequentially indicated, and the initialization NAL unit is transmitted.
  • initialization NAL units are transmitted per NAL unit type in HEVCDecoderConfigurationRecord.
  • the initialization NAL units of different NAL unit types in HEVCDecoderConfigurationRecord may be transmitted in different arrays per NAL unit type.
  • the initialization NAL units are transmitted in different arrays per parameter set/message. Accordingly, the NAL units corresponding to the VPS are collectively transmitted, and the initialization NAL units corresponding to the SPS are transmitted in other array(s), and the initialization NAL units corresponding to the PPS may be transmitted in still other array(s).
  • the order of arrays in DecorderConfigurationRecord may be determined based on the predicted number of initial units per NAL unit type.
  • the array(s) for signaling the initialization NAL units (SPS NAL units) whose NAL unit type is the SPS may appear earlier than the array(s) for signaling the initialization NAL units of other types.
  • the array(s) for signaling the initialization NAL units (PPS NAL units) whose NAL unit type is the PPS may be positioned.
  • the array(s) for signaling the initialization NAL units (SEI NAL units) whose NAL unit type is the SEI message may be then positioned.
  • the array(s) for signaling the initialization NAL units (APS NAL units) whose NAL unit type is the APS may come last.
  • the array(s) for signaling the initialization NAL units (VPS NAL units) whose NAL unit type is the VPS may come first.
  • Table 13 shows an example of DecoderConfigurationRecord according to embodiment 2-2.
  • numOfSequenceParameterSets indicates the number of SPSs used for decoding a stream to which a decoder configuration record applies. numOfSequenceParameterSets being 0 indicates that there is no SPS in the samples of the stream, and numOfSequenceParameterSets being larger than 0 indicates that at least one SPS (for example, as many SPSs as the corresponding value) is included in the samples of the stream.
  • sequenceParameterSetLength indicates the length of SPS NAL units in bytes.
  • numOfPictureParameterSets indicates the number of PPSs used for decoding the stream to which a decoder configuration record applies. numOfPictureParameterSets being 0 indicates that there is no PPS in the samples of the stream, and numOfPictureParameterSets being larger than 0 indicates that at least one PPS (for example, as many PPSs as the corresponding value) is included in the samples of the stream.
  • pictureParameterSetLength indicates the length of PPS NAL units in bytes.
  • numOfDeclarativeSEIs indicates the number of declarative SEIs used for decoding the stream to which a corresponding applies. numOfDeclarativeSEIs being 0 indicates that there is no declarative SEI in the samples of the stream, and numOfDeclarativeSEIs being larger than 0 indicates that at least one declarative SEI (for example, as many declarative SEIs as the corresponding value) is included in the samples of the stream.
  • declartiveSeiLength indicates the length of SEI units in bytes.
  • numOfAdaptationParameterSets indicates the number of APSs used for decoding the stream to which a decoder configuration record applies. numOfAdaptationParameterSets being 0 indicates that there is no APS in the samples of the stream, and numOfAdaptationParameterSets being larger than 0 indicates that at least one APS is included in the samples of the stream.
  • adaptationParameterSetLength indicates the length of APS NAL units in bytes.
  • VPS instead of the APS
  • signaling may be performed in the sequence of VPS, SPS, PPS, and declarative SEI in HEVCDecoderConfigurationRecord according to embodiment 2-2.
  • all the SPSs are first signaled, then all the PPSs, then all the declarative SEIs, and lastly all the APSs.
  • all the SPSs are first signaled, then all the declarative SEIs, then all the PPSs, and lastly, all the APSs.
  • Table 14 shows an example of DecoderConfigurationRecord according to embodiment 2-3.
  • numOfSequenceParameterSets indicates the number of SPSs used for decoding a stream to which a decoder configuration record applies. numOfSequenceParameterSets being 0 indicates that there is no SPS in the samples of the stream, and numOfSequenceParameterSets being larger than 0 indicates that at least one SPS (for example, as many SPSs as the corresponding value) is included in the samples of the stream.
  • sequenceParameterSetLength indicates the length of SPS NAL units in bytes.
  • numOfDeclarativeSEIs indicates the number of declarative SEIs used for decoding the stream to which a corresponding applies. numOfDeclarativeSEIs being 0 indicates that there is no declarative SEI in the samples of the stream, and numOfDeclarativeSEIs being larger than 0 indicates that at least one declarative SEI (for example, as many declarative SEIs as the corresponding value) is included in the samples of the stream.
  • declartiveSeiLength indicates the length of SEI units in bytes.
  • numOfPictureParameterSets indicates the number of PPSs used for decoding the stream to which a decoder configuration record applies. numOfPictureParameterSets being 0 indicates that there is no PPS in the samples of the stream, and numOfPictureParameterSets being larger than 0 indicates that at least one PPS (for example, as many PPSs as the corresponding value) is included in the samples of the stream.
  • pictureParameterSetLength indicates the length of PPS NAL units in bytes.
  • numOfAdaptationParameterSets indicates the number of APSs used for decoding the stream to which a decoder configuration record applies. numOfAdaptationParameterSets being 0 indicates that there is no APS in the samples of the stream, and numOfAdaptationParameterSets being larger than 0 indicates that at least one APS is included in the samples of the stream.
  • adaptationParameterSetLength indicates the length of APS NAL units in bytes.
  • VPS instead of the APS
  • signaling may be performed in the sequence of VPS, SPS, declarative SEI, and PPS in HEVCDecoderConfigurationRecord according to embodiment 2-3.
  • each type of the NAL units may be signaled in separate arrays from each other. Further, each type of NAL units may be signaled in a single array.
  • the NAL unit types may be signaled in separate arrays from each other. All the NAL units belonging to each NAL unit type may be signaled in the same array or may be signaled together with the NAL units belonging to a different NAL unit type in different array(s).
  • Information indicating the type and number of NAL units is first signaled in the array for each type of the NAL units. Or, information indicating the type and number of NAL units may be signaled earlier than the array for each type of the NAL units.
  • the order of the array in HEVCDecoderConfigurationRecord may be determined based on the number of NAL units for each NAL unit type or based on what the NAL unit type for the array is.
  • an array for signaling an SPS NAL unit may come earlier than an array for other NAL unit type.
  • An array for signaling a PPS NAL unit may come thereafter, which is followed by an array for signaling for an SEI NAL unit.
  • an array for signaling an APS NAL unit may come.
  • the order of coming in the order of SPS NAL unit ⁇ PPS NAL unit ⁇ SEI NAL unit ⁇ APS NAL unit may be previously determined considering the number of the NAL units belonging to each NAL unit type or cross reference.
  • SPS SPS
  • declarative SEI SEI
  • APS VPS
  • SPS SPS
  • PPS PPS
  • SEI SEI
  • an array for signaling a VPS NAL unit may come earlier than an array for other NAL unit type.
  • An array for signaling an SPS NAL unit may come thereafter, which is followed by an array for signaling for a declarative PPS NAL unit.
  • an array for signaling an SEI NAL unit may come.
  • Table 15 shows an example of HEVCDecoderConfigurationRecord according to embodiment 2-4.
  • ProfileIndication includes a profile code (profile_idc) for a stream to which the instant HEVCDecoderConfigurationRecord applies.
  • profile_idc a profile code for a stream to which the instant HEVCDecoderConfigurationRecord applies.
  • profile_idc instead of ProfileIndication, may be used.
  • the profile code may be defined in the context for specifying an HEVC technology or the context for interpreting the HEVC technology. For example, the profile code may be defined in ISO/IEC 23008-HEVC.
  • profileCompatibility is a byte defined to be the same as a byte generated between the profile code (profile_idc) and the level code (level_idc) in the SPS (Sequence Parameter Set) for the stream to which present HEVCDecoderConfigurationRecord.
  • the profile code and the level code may be defined in the context for specifying an HEVC technology or the context for interpreting the HEVC technology.
  • the level code and profile code may be defined in ISO/IEC 23008-HEVC.
  • LevelIndication includes the level code (level_idc). Although LevelIndication is put to use in Table 15, level_idc, instead of LevelIndication, may be used.
  • the level code may be defined in the context for specifying an HEVC technology or the context for interpreting the HEVC technology. For example, the level code may be defined in ISO/IEC 23008-HEVC.
  • profile_idc may have the current CVS (Coded Video Sequence) indicate the profile
  • level_idc may indicate a level that may be followed by the current CVS, that is, a level not more than a specific level.
  • chromaFormat includes a chroma format indicator (chroma_format indicator) indicated by the chroma_format_idc parameter for the stream to which HEVCDecoderConfigurationRecord applies.
  • chroma_format_idc may be defined in the context for specifying an HEVC technology or the context for interpreting the HEVC technology.
  • chroma_format_idc may be defined in ISO/IEC 23008-HEVC.
  • bitDepthLumaMinus8 includes a luma bit depth indicator indicated by the bit_depth_luma_minus8 parameter for the stream to which HEVCDecoderConfigurationRecord applies.
  • bit_depth_luma_minus8 may be defined in the context for specifying an HEVC technology or the context for interpreting the HEVC technology.
  • bit_depth_luma_minus8 may be defined in ISO/IEC 23008-HEVC.
  • bitDepthLumaMinus8 includes a chroma bit depth indicator indicated by the bit_depth_chroma_minus8 parameter for the stream to which HEVCDecoderConfigurationRecord applies.
  • bit_depth_chroma_minus8 may be defined in the context for specifying an HEVC technology or the context for interpreting the HEVC technology.
  • bit_depth_chroma_minus8 may be defined in ISO/IEC 23008-HEVC.
  • avgFrameRate indicates an average frame rate on a per-frame basis for the stream to which HEVCDecoderConfigurationRecord applies. avgFrameRate being 0 indicates that no average frame rate has been specified. That is, avgFrameRate being 0 indicates a non-specified average frame rate.
  • constantFrameRate being 1 indicates that the stream to which this HEVCDecoderConfigurationRecord applies has a constant frame rate.
  • constantFrameRate being 2 indicates that the representation of each temporal layer in the stream has a constant frame rate.
  • constantFrameRate being 0 indicates that the stream may or may not be of constant frame rate.
  • numTemporalLayers being larger than 1 indicates that the stream to which this HEVCDecoderConfigurationRecord applies is temporally scalable and includes the same number of layers as the numTemporalLayers value. numTemporalLayers being 1 indicates that the stream is not temporally scalable. numTemporalLayers being 0 indicates that it is not known whether the stream is temporally scalable.
  • lengthSizeMinusOne+1 indicates, on a per-byte basis, the length of NalUnitLength field in the HEVC video sample in the stream to which this HEVCDecoderConfigurationRecord applies. For example, a one-bite size may be indicated as lengthSizeMinusOne being 0. The value of this field may have any one of 0, 1, or 3 corresponding to the lengths each coded in one, two, or four bytes.
  • numOfInitParameterGroups corresponds to the number of NAL unit types present in HEVCDecoderConfigurationRecord.
  • a parameter type corresponds to a NAL unit type.
  • VPS may correspond to NAL unit type 0, SPS to NAL unit type 1, and PPS to NAL unit type 2.
  • initializationNalUnitType specifies a related initial NAL unit type. Examples of the NAL unit types specified in this embodiment are shown in Table 7, 8, or 9.
  • the NAL unit types may appear in predetermined order. For example, in case the NAL unit types shown in Table 7 are used, SPS, PPS, SEI, and APS may appear in this order in HEVCDecoderConfigurationRecord. In case the NAL unit types shown in Table 8 are used, VPS, SPS, PPS, and SEI may appear in this order in HEVCDecoderConfigurationRecord. Further, in case the NAL unit types shown in Table 9 are used, VPS, SPS, PPS, SEI, and APS may appear in this order in HEVCDecoderConfigurationRecord.
  • numInitializationNalus may indicate the number of NAL units per NAL unit type included in the configuration record for the stream to which HEVCDecoderConfigurationRecord applies.
  • numInitializationNalus may indicate the number of VPS NAL units, the number of SPS NAL units, the number of PPS NAL units, the number of (declarative) SEI NAL units, and/or the number of APS NAL units.
  • the declarative SEI NAL unit includes an SEI message of ‘declarative’ nature, i.e., an SEI message providing information about the stream as a whole.
  • An example of such SEI is a user-data SEI. If the value is 0, at least one SPS and one PPS are included in the stream samples.
  • nalUnitLength indicates the length of NAL unit in bytes.
  • nalUnit includes VPS, SPS, PPS, APS or declarative SEI NAL units. That is, nalUnit in Table 15 includes NAL units belonging to the NAL unit type specified by initializationNalUnitType.
  • VPS, SPS, PPS, APS, or declarative SEI NAL units may be defined in the context for specifying an HEVC technology or in the context for interpreting the HEVC technology.
  • the VPS, SPS, PPS, APS, or declarative SEI NAL units may be defined in ISO/IEC 23008-HEVC.
  • the parameter group of numOfInitParameterGroups corresponds to the NAL unit type as described in connection with Tables 7 to 9. Accordingly, in HEVCDecoderConfigurationRecord, what NAL unit type it is indicated for each NAL unit type (initializationNalUnitType) and the number of NAL units belonging to a corresponding NAL unit type is indicated (numInitializationNalus). Subsequently, for the NAL units belonging to a corresponding NAL unit type, the length of the NAL units is indicated (nalUnitLength) and the NAL units are stored (nalUnit).
  • Assignment of bits to the nalUnit may be conducted on a per-eight bits basis based on the length of the NAL units.
  • the assignment may be based on the NAL unit length of a particular NAL unit type or the length of a NAL unit stored.
  • per-eight bits bit assignment is performed based on the length of SPS (sequenceParameterSetLength).
  • Table 16 shows another example of HEVCDecoderConfigurationRecord according to embodiment 2-4, in case information regarding the initialization NAL unit transmitted in HEVCDecoderConfigurationRecord is simply represented using ‘nalUnit’ instead of ‘initializationNalUnit.’
  • bit assignment to nalUnit is conducted based on the length of a corresponding NAL unit (nalUnitLength).
  • the NAL unit is included in DecoderConfigurationRecord and is transmitted according to this disclosure, for ease of description, the present invention is not limited thereto.
  • the NAL unit may be stored in DecoderConfigurationRecord and may be transmitted over a network. Further, the NAL unit may be stored in DecoderConfigurationRecord, and DecoderConfigurationRecord may be stored in a storage medium and transferred.
  • DecoderConfigurationRecord or a stream including DecoderConfigurationRecord being received is set forth in this disclosure, this merely for convenience of description, and the present invention is not limited thereto.
  • DecoderConfigurationRecord or a stream including DecoderConfigurationRecord being received is set forth in this disclosure, this merely for convenience of description, and the present invention is not limited thereto.
  • DecoderConfigurationRecord or a stream including DecoderConfigurationRecord being received may mean that DecoderConfigurationRecord or the stream including DecoderConfigurationRecord is received over a network or that DecoderConfigurationRecord or the stream including DecoderConfigurationRecord is obtained from a storage medium.
  • each embodiment in embodiment 2, i.e., embodiment 2-1, embodiment 2-2, embodiment 2-3, and embodiment 2-4, may apply as a separate method, or the embodiments may apply together.
  • a multi-layer structure may apply to a single NAL unit type.
  • a single NAL unit type For example, also in the case shown in Table 15 or 16, the number of arrays of NAL units for the initial NAL unit type(s) indicated through
  • HEVCDecoderConfigurationRecord may be indicated.
  • HEVCDecoderConfigurationRecord it is indicated whether the initialization NAL unit(s) corresponding to a particular initialization NAL unit type is(are) included in one array (of NAL units). For example, as in the example shown in Table 12, array_completeness being 1 may indicate that all the NAL units of a given type are included in a following array, and array_completeness being 0 may indicate that among the initialization NAL units of a given type, the initialization NAL units that are not in the following array are present in the stream.
  • the type of an initial NAL unit type and the number of the NAL unit types belonging to the initial NAL unit type may be indicated for each array of the initial NAL units.
  • the length of each initialization NAL unit may be sequentially indicated, and the initialization NAL unit may be transmitted(stored).
  • FIG. 2 is a flowchart schematically illustrating a method of storing video information according to the present invention.
  • the video information may be information corresponding to some or all of the media file formats described above in connection with FIG. 1 and include decoder configuration information (DecoderConfigurationRecord).
  • the video information storage apparatus is described to perform each step shown in FIG. 2 .
  • the video information storage apparatus may encode video information (S 210 ).
  • the video information storage apparatus may encode video content based on HEVC.
  • the video information storage apparatus may generate a NAL unit including information necessary for decoding and encoded video content.
  • the video information storage apparatus may store the NAL unit in the decoder configuration record (S 220 ).
  • the decoder configuration record may include information to indicate the type of NAL unit stored. At this time, the type of NAL unit may be VPS, SPS, PPS, or SEI.
  • the decoder configuration record may be HEVCDecoderConfigurationRecord.
  • the decoder configuration record may be parsed in units of predetermined bits, unless the syntax elements are in units of eight bits, the video information storage apparatus may be configured to add a reserved bit so that the bits assigned to the syntax element and the reserved bit are eight bits or multiples of eight bits.
  • the decoder configuration record may store NAL units per NAL unit type.
  • the NAL unit type may correspond to a parameter set stored in the NAL unit.
  • the decoder configuration record may also store information indicating the number of NAL units belonging to each NAL unit type per NAL unit type.
  • the NAL unit types appearing in the decoder configuration record may have a constant order.
  • the storage may be performed so that the NAL units whose NAL unit type is VPS appear earlier (or parsed earlier) in the decoder configuration record than the NAL units whose NAL unit type is SPS.
  • the storage may be performed so that the NAL units whose NAL unit type is SPS appear earlier (or parsed earlier) in the decoder configuration record than the NAL units whose NAL unit type is PPS.
  • the storage may be performed so that the NAL units whose NAL unit type is PPS appear earlier (or parsed earlier) in the decoder configuration record than the NAL units whose NAL unit type is SEI.
  • the decoder configuration record may include information indicating the type of NAL unit and information indicating the length of the NAL unit, together with the NAL unit.
  • the NAL units may be stored in the decoder configuration record per NAL unit type, and in this case, bit assignment for storing the NAL units may be conducted at every multiple of eight bits.
  • the bit assignment for storing the NAL units may be conducted based on the length of the NAL units.
  • the NAL units may be stored using the bits assigned at every multiple of the length of the NAL units to be stored.
  • the NAL units may be stored using the bits assigned at every multiple of the length of the NAL units corresponding to a particular NAL unit type.
  • the number of bits assigned for storing the NAL units may be a multiple of eight while being a multiple of the length of the NAL units.
  • each step may also be performed in individual units in the video information storage apparatus.
  • FIG. 3 is a flowchart schematically illustrating a method of parsing video information according to the present invention.
  • the video information shown in FIG. 3 may be information corresponding to some or all of the media file formats described above in connection with FIG. 1 and includes decoder configuration information (DecoderConfigurationRecord).
  • a video information parsing apparatus performs each step shown in FIG. 3 .
  • the video information parsing apparatus may parse a decoder configuration record (S 310 ).
  • the decoder configuration record is information belonging to the file format, and parsing may be performed at the system level.
  • the video information parsing apparatus may obtain information regarding the profile, level, format, or bit depth of the corresponding video information.
  • the video information parsing apparatus may obtain information regarding the type and length of NAL unit included in the decoder configuration record.
  • the decoder configuration record according to the present invention includes information indicating the type of NAL unit, and thus, the video information parsing apparatus may parse the decoder configuration record to obtain the information indicating the type of NAL unit. Accordingly, the video information parsing apparatus may determine the type of NAL unit included in the decoder configuration record at the system level and may perform parsing accordingly.
  • Parsing may mean obtaining a specific value of a syntax element and/or data (information). Parsing on the decoder configuration record may be performed in units of predetermined bits.
  • the parser performing parsing in the video information parsing apparatus is an eight-bit parser, and parsing may be performed in units of eight bits.
  • the decoder configuration record is the same as those described earlier in connection with FIG. 1 and the tables.
  • the decoder configuration record may include, together the information indicating the NAL unit type, the information indicating the length of the NAL unit alongside the NAL unit.
  • the decoder configuration record may store NAL units per NAL unit type.
  • the NAL unit type may correspond to a parameter set stored in the NAL unit.
  • the decoder configuration record may also store information indicating the number of NAL units belonging to each NAL unit type per NAL unit type.
  • the NAL unit types appearing in the decoder configuration record may have a constant order.
  • the storage may be performed so that the NAL units whose NAL unit type is VPS appear earlier (or parsed earlier) in the decoder configuration record than the NAL units whose NAL unit type is SPS.
  • the storage may be performed so that the NAL units whose NAL unit type is SPS appear earlier (or parsed earlier) in the decoder configuration record than the NAL units whose NAL unit type is PPS.
  • the storage may be performed so that the NAL units whose NAL unit type is PPS appear earlier (or parsed earlier) in the decoder configuration record than the NAL units whose NAL unit type is SEI.
  • the decoder configuration record may include information indicating the type of NAL unit and information indicating the length of the NAL unit, together with the NAL unit.
  • the NAL units may be stored in the decoder configuration record per NAL unit type, and in this case, bit assignment for storing the NAL units may be conducted at every multiple of eight bits. Accordingly, the NAL units may be parsed at every eight bits or at every multiple of eight bits.
  • the bit assignment for storing the NAL units may be conducted based on the length of the NAL units.
  • the NAL units may be stored using the bits assigned at every multiple of the length of the NAL units to be stored.
  • the NAL units may be stored using the bits assigned at every multiple of the length of the NAL units corresponding to a particular NAL unit type. Accordingly, the NAL units may be parsed at every multiple of the length of the NAL units.
  • the number of bits assigned for storing the NAL units may be a multiple of eight while being a multiple of the length of the NAL units.
  • the parsing may be performed at every multiple of eight bits that is also a multiple of the length of the NAL units.
  • the information stored in the decoder configuration record may be sequentially parsed based on the stored order.
  • the video information parsing apparatus may decode video information based on the parsed decoder configuration record (S 320 ).
  • the video information parsing apparatus may process information corresponding to the decoder configuration record based on the parsed decoder configuration record and might not process or recognize the information that does not match the decoder configuration record.
  • decoding includes parsing and restoring video information.
  • the restoration of video information may be conducted in the video information parsing apparatus, or may be performed by a separate decoder based on a result of the parsing performed by the video information parsing apparatus.
  • the video information parsing apparatus may parse the NAL units per NAL unit type based on the parsed decoder configuration record.
  • the decoder configuration record includes a plurality of NAL unit arrays
  • the NAL units may be parsed per array according to the type of NAL units.
  • the NAL units included in the decoder configuration record may be the initialization NAL units as described earlier.
  • FIG. 4 is a block diagram schematically illustrating a configuration of a video information storage apparatus according to the present invention.
  • the video information may be information corresponding to some or all of the media file formats described above in connection with FIG. 1 , and includes decoder configuration information (DecoderConfigurationRecord).
  • the video information storage apparatus 400 includes an encoding unit 410 and a storage unit 420 .
  • the encoding unit 410 may encode input video information.
  • the encoding unit 410 may encode video information using an HEVC-supportive method.
  • the encoding unit 410 may generate an NAL unit including information necessary for decoding and encoded video content.
  • the storage unit 420 may store the generated NAL unit in the decoder configuration record.
  • the decoder configuration record may include information indicating the type of NAL unit. At this time, the type of NAL unit may be VPS, SPS, PPS, or SEI. The details of the decoder configuration record have been described earlier.
  • FIG. 5 is a block diagram schematically illustrating a configuration of a video information parsing apparatus according to the present invention.
  • the video information may be information corresponding to some or all of the media file formats described above in connection with FIG. 1 and includes decoder configuration information (DecoderConfigurationRecord).
  • the video information parsing apparatus 500 includes a parsing unit 510 and a decoding unit 520 .
  • the parsing unit 510 may parse the decoder configuration record in the file format.
  • the parsing unit 510 may parse the decoder configuration record at the system level.
  • the decoder configuration record includes the NAL unit and information indicating the type of the NAL unit.
  • the parsing unit 510 may parse the decoder configuration record to obtain information regarding the profile, level, format, and bit depth of the video information. Further, the parsing unit 510 may obtain the information regarding the length and type of the NAL unit included in the decoder configuration record.
  • the decoder configuration record has been described above.
  • the decoding unit 520 may decode the video information based on the decoder configuration record.
  • the decoding unit 520 may process information corresponding to the decoder configuration record based on the parsed decoder configuration record and might not process or recognize the information that does not match the decoder configuration record.
  • decoding includes parsing and restoring video information
  • the restoration of video information may be performed by the decoding unit 520 of the video information parsing apparatus 500 or by a separate decoder from the video information parsing apparatus 500 based on a result of the parsing performed by the video information parsing apparatus 500 .
  • HEVCDecoderConfigurationRecord is information for specifying an initial configuration of the decoder, and accordingly, the NAL unit transmitted in HEVCDecoderConfigurationRecord has been herein referred to as the initial NAL unit.
  • initial NAL unit the NAL unit transmitted in HEVCDecoderConfigurationRecord
  • the terms “initial NAL unit” and “NAL unit” have been interchangeably used.

Abstract

The present invention relates to a method for storing image data, and a method for parsing image data, and an apparatus for using the same, which method includes the steps of encoding the image data, and storing an NAL (Network Abstraction Layer) unit containing the encoded image data in the decoder set register in which NAL units may be stored according to the type of NAL unit.

Description

    TECHNICAL FIELD
  • The present invention relates to video compression technology, and more specifically, to the file format of compressed video information.
  • BACKGROUND ART
  • Recently, there is increasing demand for high-quality videos in various applications. Increased resolution and quality of videos causes an increase in the amount of information regarding the videos.
  • Accordingly, in case video information is transmitted by way of a medium such as the existing wired/wireless wide band circuit line or video information is stored using the existing storage media, the costs for transmitting and storing information increase.
  • High-efficiency video compression techniques may be put to use to effectively transmit, store, and replay high-quality video information.
  • For example, to raise efficiency of video compression, inter prediction and intra prediction may be used. In the inter prediction method, information of other pictures may be referenced to predict a pixel value of the current picture, and in the intra prediction method, a pixel value is predicted using the correlation between pixels in the same picture.
  • The encoding apparatus and decoding apparatus for compression-processing and reproducing video information compress and process a high volume of video information by a diversity of methods as described above.
  • However, even though video information is compressed and processed, as demand for high-quality videos increases as described above, the amount of video information processed is sharply increasing, and the amount of compressed video information is anticipated to be increased as compared with the conventional art.
  • Accordingly, it would be an issue how the format of video information files and files containing the information for processing the same is to be specified by media for effective process so as to treat a high volume of high-resolution video information.
  • SUMMARY OF INVENTION Technical Problem
  • The present invention aims to provide a method and apparatus of encoding information on a high volume of high-quality video, storing information for reconstructing (decoding) the encoded video and transmitting the stored information efficiently.
  • The present invention aims to provide a method and apparatus of configuring an available file format which is supporting HEVC (High Efficiency Video Coding).
  • The present invention aims to provide a method and apparatus of effectively configuring a decoding configuration record in the file format.
  • Technical Solution
  • An embodiment according to the present invention is a method of storing video information which comprises encoding video information; and storing an NAL (Network Abstraction Layer) unit including the encoded video information in a decoder configuration record, wherein the decoder configuration record may store NAL units per NAL unit type.
  • Another embodiment according to the present invention is a method of parsing video information which comprises parsing a decoder configuration record; and parsing an NAL unit based on the parsed decoder configuration record, wherein the decoder configuration record may store NAL units per NAL unit type.
  • Still another embodiment according to the present invention is an apparatus of storing video information which comprises an encoding unit encoding video information; and a storage unit storing an NAL (Network Abstraction Layer) unit including the encoded video information in a decoder configuration record, wherein the decoder configuration record may store NAL units per NAL unit type.
  • Yet still another embodiment according to the present invention is an apparatus of parsing video information which comprises a parsing unit parsing a decoder configuration record; and a decoding unit parsing an NAL unit based on the parsed decoder configuration record, wherein the decoder configuration record may store NAL units per NAL unit type.
  • Advantageous Effects
  • According to the present invention, information for encoding and decoding a high volume of high-quality video information may be effective stored and transferred.
  • According to the present invention, an available file format may be configured by supporting HEVC (High Efficiency Video Coding).
  • According to the present invention, a decoding configuration record in the file format may be effectively configured so that the NAL unit information may be identified at a system level.
  • DESCRIPTION OF DRAWINGS
  • FIG. 1 illustrates an example media file format according to the present invention.
  • FIG. 2 is a flowchart schematically illustrating a method of storing video information according to the present invention.
  • FIG. 3 is a flowchart schematically illustrating a method of parsing video information according to the present invention.
  • FIG. 4 is a block diagram schematically illustrating a configuration of a video information storage apparatus according to the present invention.
  • FIG. 5 is a block diagram schematically illustrating a configuration of a video information parsing apparatus according to the present invention.
  • MODE FOR INVENTION
  • Various changes may be made to the present invention, and the present invention may have various embodiments. Specific embodiments are described in detail with reference to the accompanying drawings. However, the present invention is not limited to the embodiments. The terms used herein are used for the illustrative purposes and are not intended to limit the present invention.
  • A singular term includes a plural term unless otherwise stated. As used herein, the terms “include” or “have” are used to indicate that there are features, numerals, steps, operations, components, parts or combinations thereof as described herein, but do not exclude the presence or possibility of addition of one or more features, numerals, steps, operations, components, parts or components thereof.
  • Meanwhile, the elements in the drawings are shown independently for ease of description on the different features from each other in the video encoding apparatus/decoding apparatus and should not be construed as meaning that the elements are implemented in separate pieces of hardware or software. For example, among the elements, two or more may be combined to configure a single element, and any one element may be divided into multiple elements. Embodiments where the elements are combined and/or each element is divided belong to the scope of the present invention without departing from the gist of the present invention.
  • Hereinafter, preferred embodiments of the present invention are described in detail with reference to the drawings. The same reference numerals refer to the same elements and the repetitive description on the same elements is omitted.
  • Recently, discussion about methods for processing high-resolution, high-volume video information is underway, and standardization to reflect the same is also discussion. In relation to this, it needs to be considered what format of files are to be put to used corresponding to the methods of processing high-volume, high-resolution videos.
  • Accordingly, the conventional file formats to process video information need to be modified or renewed to process high-volume/high-quality video information.
  • As described above, discussion on the video encoding/decoding methods for high-quality/high-volume video information and attempt to standardize the same are ongoing. During this course, besides the methods of increasing robustness and coding efficiency, various features to be used in the system are in discussion.
  • Regarding this, an issue is a format in which the video streams are stored to allow for effective support for the video encoding/decoding methods that are in discussion to raise video quality and compression efficiency.
  • Although the existing ISO-based media file format is available for high-quality/high-volume video content, it requires modification in view of the configuration of parameter sets.
  • Hereinafter, the decoder configuration record according to the present invention and the video information and file format based on the decoder configuration record are described below in detail.
  • As used herein, the high-volume, high-quality video coding method, for ease of description, is denoted HEVC (High Efficiency Video Coding), and the high-volume, high-quality content processed by adopting HEVC is denoted HEVC content.
  • For storage of the HEVC content, an extension of a file format considering the parameter set may be used, which is available for HEVC to the existing capacity of the media file format based on the ISO (International Organization for Standardization).
  • FIG. 1 illustrates an example media file format according to the present invention.
  • As described above, the media file format according to the present invention may be an extension to the ISO-based media file format.
  • The HEVC-supportive file 100 may include recursive boxes. For example, the file 100 has an object-oriented structure consisting of a series of objects called boxes. All the data is contained in the boxes, and each box may be defined as a unique identifier and a length.
  • Referring to FIG. 1, the file 100 may include an FTYP 110, an MOOV 120, and an MDAT 130. Further, although not shown, the file 100 may include tracks respectively corresponding to samples.
  • The FTYP 110 is a file type and contains information regarding a file type. The FTYP 110 is positioned at the beginning of the file 100.
  • The MOOV 120 is a box containing header information of the file 100. The MOOV 120 may include a decoder configuration record as decoder configuration information. For example, the HEVC visual sample entry contains the HEVC configuration box, and the HEVC configuration box may contain a HEVC decoder configuration record.
  • At this time, the MOOV 120 may include a HEVC visual sample entry or a HEVC configuration box. Further, the MOOV 120 may be a HEVC visual sample entry or a HEVC configuration box. Accordingly, in the example illustrated in FIG. 1, for ease of description, the MOOV 120 includes the HEVC decoder configuration record 140.
  • The MDAT 130 includes payload data. Accordingly, encoded data for a video file is delivered to this box. Referring to FIG. 1, the MDAT 130 includes samples.
  • The sample may mean an access unit. Sample X may be an Xth picture.
  • Meanwhile, the above-described decoder configuration record is a record regarding an initial configuration of the decoder, and the decoder parses information corresponding to the configuration.
  • In case the decoder configuration record is included in the sample entry, the decoder configuration record includes an NAL (Network Abstraction Layer) unit to which each sample belongs and a length field to indicate the length of a parameter set.
  • The NAL unit may be of a syntax structure including bytes containing data of an RSRP (Raw Byte Sequence Payload) type, which is, as necessary, deployed together with an indicator on the type of subsequent data and a byte to prevent competition.
  • The decoder configuration record may be externally framed. Accordingly, the file header and the file payload may be physically distinguished from each other.
  • Parameter sets to support HEVC include a video parameter set, a sequence parameter set, and a picture parameter set.
  • Transmitting of information which are not often varied are decoupled by using the video parameter set, the sequence parameter set, and the picture parameter set. For example, a slice including encoded block data may refer to the picture parameter set including the decoding parameters, and the picture parameter set may refer to the sequence parameter set to refer to the sequence level parameter. The sequence parameter set may likewise refer to the video parameter set to refer to the video level parameter.
  • A video stream may be represented by one video track in the file.
  • The elementary stream is an array or set of NAL units. The elementary stream may be defined a video elementary stream and a video and parameter set elementary stream.
  • The video elementary stream does not include a parameter set, and all of the parameter sets are included in the sample entry(ies). The video and parameter set elementary stream may include a parameter set and may include parameter sets included in the sample entry(ies).
  • The parameter set used in a picture is transmitted earlier than the sample including the picture or the sample for the picture. The sample entry when the video parameter set, the sequence parameter set, and the picture parameter set may be stored only in the sample entry for the video stream to which a particular sample entry applies, may be denoted hvc1, and the sample entry when the video parameter set, the sequence parameter set, and the picture parameter set may be stored in the sample entry and the samples is denoted hev1, and as necessary, two cases may be distinguished from each other.
  • As described above, the file format needs to be modified to support HEVC, and in particular, the decoder configuration record regarding the decoder initial configuration needs to be modified.
  • Table 1 shows an example decoder configuration record used to support video encoding/decoding according to the prior art. According to this disclosure, the conventional video encoding/decoding method is denoted AVC (Advanced Video Coding) to be distinguished from HEVC.
  • TABLE 1
    aligned(8) class AVCDecoderConfigurationRecord {
     unsigned int(8) configurationVersion = 1;
     unsigned int(8) AVCProfileIndication;
     unsigned int(8) profile_compatibility;
     unsigned int(8) AVCLevelIndication;
     bit(6) reserved = ‘111111’b;
     unsigned int(2) lengthSizeMinusOne;
     bit(3) reserved = ‘111’b;
     unsigned int(5) numOfSequenceParameterSets;
     for (i=0; i< numOfSequenceParameterSets; i++) {
      unsigned int(16) sequenceParameterSetLength ;
      bit(8*sequenceParameterSetLength) sequenceParameterSetNALUnit;
     }
     unsigned int(8) numOfPictureParameterSets;
     for (i=0; i< numOfPictureParameterSets; i++) {
      unsigned int(16) pictureParameterSetLength;
      bit(8*pictureParameterSetLength) pictureParameterSetNALUnit;
     }
     if( profile_idc == 100 || profile_idc == 110 ||
      profile_idc == 122 || profile_idc == 144 )
     {
      bit(6) reserved = ‘111111’b;
      unsigned int(2) chroma_format;
      bit(5) reserved = ‘11111’b;
      unsigned int(3) bit_depth_luma_minus8;
      bit(5) reserved = ‘11111’b;
      unsigned int(3) bit_depth_chroma_minus8;
      unsigned int(8) numOfSequenceParameterSetExt;
      for (i=0; i< numOfSequenceParameterSetExt; i++) {
       unsigned int(16) sequenceParameterSetExtLength;
       bit(8*sequenceParameterSetExtLength)
    sequenceParameterSetExtNALUnit;
      }
     }
    }
  • The AVC-supportive decoder configuration record is referred to as AVCDecoderConfigurationRecord.
  • Referring to Table 1, AVCDecoderConfigurationRecord contains information (configurationVersion) to indicate the configuration version, information (AVCProfileIndication) to indicate the profile, information (profile compatibility) to indicate profile compatibility, and information (AVCLevelIndication) to indicate the level.
  • The profile refers to a sub group to which among encoding techniques a decoder configuration applies, and the level refers to a constraint according to the same.
  • In the decoder configuration record, the length (number of bits) assigned to each information is specified.
  • Table 2 shows an example decoder configuration record supportive of HEVC. For ease of description, the HEVC-supportive decoder configuration record is denoted HEVCDecoderConfigurationRecord.
  • TABLE 2
    aligned(8) class HEVCDecoderConfigurationRecord {
     unsigned int(8) configurationVersion = 1;
     unsigned int(8) ProfileIndication;
     unsigned int(8) profileCompatibility;
     unsigned int(8) LevelIndication;
     bit(6) reserved = ‘111111’b;
     unsigned int(2) chromaFormat;
     bit(5) reserved = ‘11111’b;
     unsigned int(3) bitDepthLumaMinus8;
     bit(5) reserved = ‘11111’b;
     unsigned int(3) bitDepthChromaMinus8;
     bit(16) avgFrameRate;
     bit(1) constantFrameRate;
     bit(3) numTemporalLayers;
     bit(2) reserved = ‘11’b;
     unsigned int(2) lengthSizeMinusOne;
     unsigned int(16) numInitializationNalus;
     for (i=0; i< numInitializationNalus; i++) {
      unsigned int(16) nalUnitLength;
      bit(8*nalUnitLength) nalUnit;
     }
    }
  • Referring to Table 2, HEVCDecoderConfigurationRecord contains information (configurationVersion) to indicate the configuration version.
  • HEVCDecoderConfigurationRecord contains information regarding a sub group of techniques/tools applicable to HEVC and constraints that apply to the techniques/tools. Referring to Table 2, an example in which profileIndication as information to indicate the profile, profileCompatibility as information to indicate profile compatibility, and LevelIndication as information to indicate the level, are described.
  • The profile indicates a tool or algorithm available in HEVC. The level indicates constraints as to particular parameters of a bit stream.
  • Although not shown in Table 2, HEVCDecoderConfigurationRecord may also contain information regarding a tier in addition to the profile and level, as constraint/restriction or configuration. The tier indicates information regarding the maximum bit rate and CPB (Coded Picture Buffer) capacities.
  • The bit stream does not have values different from the profile information and level information included in HEVCDecoderConfigurationRecord.
  • The information to indicate profile compatibility, profileCompatibility, indicates whether the encoded video sequence (CVS) complies with the profile.
  • HEVCDecoderConfigurationRecord includes information (chromaFormat) to indicate the format of the chroma component, information (bitDepthLumaMinus8) to indicate the bit depth of the luma component, and information (bitDepthChromaMinus8) to indicate the bit depth of the chroma component.
  • chromaFormat contains information indicating the chroma format for a stream to which a corresponding decoder configuration record applies. The chroma format for a video in a stream may be indicated by a chroma format indicator. For example, the value of the chroma format indicator being 0 may indicate monochrome, the value being 1 may indicate 4:2:0 sampling for the three components (Y, Cr, Cb) of color, and the value being 2 may indicate 4:2:2 sampling on the three components (Y, Cr, Cb) of color, and the value being 3 may indicate 4:4:4 sampling on the three components (Y, Cr, Cb) of color.
  • bitDepthLumaMinus8 contains information to specify the bit depth of a luma sample array for a stream to which a corresponding decoder configuration record applies. At this time, the bit depth of the luma quantization parameter range offset may also be specified by the information to specify the bit depth of the luma sample array.
  • bitDepthChromaMinus8 contains information to specify the bit depth of a chroma sample array for a stream to which a corresponding decoder configuration record applies. At this time, the bit depth of the chroma sample quantization parameter range offset may also be specified based on the information to specify the bit depth of the chroma sample array.
  • HEVCDecoderConfigurationRecord includes information regarding a frame rate. For example, HEVCDecoderConfigurationRecord may include information (avgFrameRate) to indicate an average frame rate value, constant frame rate information (constantFrameRate) to configure a frame rate value to constantly replay a video, and information (numTemporalLayers) to indicate the number of temporal layers.
  • avgFrameRate indicates an average frame rate for a stream to which a corresponding decoder configuration record applies. avgFrameRate being 0 indicates an unspecified average frame rate.
  • constantFrameRate indicates whether a frame rate is constant for a stream to which a corresponding decoder configuration record applies. For example, constantFrameRate being 0 indicates that the stream may or may not have a constant frame rate. constantFrameRate being 1 indicates that the stream has a constant frame rate. constantFrameRate being 2 indicates that the representation of each temporal layer in the stream has a constant frame rate.
  • numTemporalLayers includes information to specify a temporal layer coefficient of a stream to which a corresponding decoder configuration record applies. For example, numTemporalLayers being 0 indicates whether the stream is temporally scalable, and numTemporalLayers being 1 indicates that the stream is not temporally scalable. numTemporalLayers being larger than 1 may indicate that the stream is temporally scalable and that the same number of temporal layers as numTemporalLayers are included.
  • HEVCDecoderConfigurationRecord may include information, lengthSizeMinusOne, regarding the NAL unit length of the HEVC video sample in a stream to which a corresponding decoder configuration record applies. For example, lengthSizeMinusOne may represent the length of the NAL unit length (NALUnitLength) field of the HEVC video sample in the stream in bytes. For example, a one-bit size may be indicated as lengthSizeMinusOne being 0.
  • HEVCDecoderConfigurationRecord may contain information on the number of NAL units. In the example shown in Table 2, the number of NAL units of the stream to which a corresponding decoder configuration record applies may be specified through numInitializationNalus.
  • In HEVCDecoderConfigurationRecord, each NAL unit and the length of the NAL unit are specified by nalUnit and nalUnitLength, respectively. At this time, the length of NAL unit may be specified in bytes.
  • Meanwhile, there are some differences between the decoder configuration record for AVC illustrated in Table 1 and the decoder configuration record for HEVC illustrated in Table 2.
  • In AVCDecoderConfigurationRecord, among the syntax elements, the information regarding the chroma format (chroma_format), the information regarding the bit depth of the luma sample (bit_depth_luma_minus8), and the information on the bit depth of the chroma sample (bit_depth_luma_minus8) are conditionally transmitted as per profile information.
  • In contrast, in HEVCDecoderConfigurationRecord, the syntax elements chroma_format, bit_depth_luma_minus8, and bit_depth_luma_minus8 are always unconditionally signaled.
  • Further, HEVCDecoderConfigurationRecord, unlike AVCDecoderConfigurationRecord, does not support SPS extension (Sequence Parameter Set extension: SequenceParameterSetExt).
  • The non-VCL (Non-Video Coding Layer) NAL unit, together with the VCL NAL unit, may be stored in the payload, and may be stored in the decoder configuration record. In case the non-VCL NAL unit is stored in the decoder configuration record, SPS (Sequence Parameter Set) and PPS (Picture Parameter Set) are separately signaled in different arrays in AVCDecoderConfigurationRecord. At this time, an SEI (Supplemental Enhancement Information) message may be signaled in the SPS and PPS.
  • In HEVCDecoderConfigurationRecord, contrarily, all the non-VCL NAL units (for example, SPS, PPS, APS (Adaptation Parameter Set), SEI, etc.) are mixed in one array or in one initialization NAL unit.
  • As such, HEVCDecoderConfigurationRecord has different features from AVCDecoderConfigurationRecord.
  • However, the decoder configuration record for HEVC, HEVCDecoderConfigurationRecord, has also something that needs to be enhanced for effective video coding (encoding/decoding).
  • Hereinafter, HEVCDecoderConfigurationRecord and its effects according to the present invention are described below in connection with specific embodiments of the present invention.
  • 1. Method of Signaling Elements in HEVC Decoder Configuration Record (HEVCDecoderConfigurationRecord)
  • In HEVCDecoderConfigurationRecord of Table 2, syntax elements are being signaled as shown in Table 3 below.
  • Table 3 only shows signaling constantFrameRate, numTemporalLayers, and lengthSizeMinusOne among the syntax elements shown in Table 2.
  • TABLE 3
    bit(1) constantFrameRate;
    bit(3) numTemporalLayers;
    bit(2) reserved = ‘11’ b;
    unsigned int(2) lengthSizeMinusOne
  • Referring to Table 3, constantFrameRate is assigned with 1 bit, numTemporalLayers is assigned with 3 bits, and lengthSizeMinusOne is assigned with 2 bits, with 2 bits assigned as reserved bits.
  • Accordingly, assuming that an eight-bit parser is used to read streams every eight bits, in the case shown in Table 3, eight-bit string data is rendered to include three or more syntax elements.
  • Thus, it is difficult to smoothly perform parsing and to maintain simplicity of per-eight bits parsing.
  • To address such issues, one of the following two embodiments may be put to use.
  • Embodiment 1-1 Method of Applying Eight-Bit Aligned Signaling to all Syntax Elements
  • In embodiment 1-1, all the syntax elements signaled in HEVCDecoderConfigurationRecord are aligned in units of eight bits. At this time, padding bits may be used for the syntax elements that do not have the size of eight-bit unit.
  • For example, syntax elements whose size is insufficient to be eight bits or multiples thereof may add a padding bit before or behind the syntax elements. The reserved bits may be used as the padding bits.
  • Table 4 shows an example of HEVCDecoderConfigurationRecord according to embodiment 1-1.
  • TABLE 4
    aligned(8) class HEVCDecoderConfigurationRecord {
     unsigned int(8) configurationVersion = 1;
     unsigned int(8) ProfileIndication;
     unsigned int(8) profileCompatibility;
     unsigned int(8) LevelIndication;
     bit(6) reserved = ‘111111’b;
     unsigned int(2) chromaFormat;
     bit(5) reserved = ‘11111’b;
     unsigned int(3) bitDepthLumaMinus8;
     bit(5) reserved = ‘11111’b;
     unsigned int(3) bitDepthChromaMinus8;
     bit(16) avgFrameRate;
     bit(6) reserved = ‘111111’b;
     bit(2) constantFrameRate;
     bit(5) reserved = ‘11111’b;
     bit(3) numTemporalLayers;
     bit(6) reserved = ‘111111’b;
     unsigned int(2) lengthSizeMinusOne;
     unsigned int(16) numInitializationNalus;
     for (i=0; i< numInitializationNalus; i++) {
      unsigned int(16) nalUnitLength;
      bit(8*nalUnitLength) nalUnit;
     }
    }
  • In Table 3, reserved bits are added before the syntax elements that do not have a size of eight-bit unit so that transmission for the syntax elements is performed in units of eight bits and so that the parsing of the syntax elements is performed in units of eight bits.
  • In other words, in embodiment 1-1, the reserved bit is added before the syntax element so that parsing/transmission may be carried out per syntax element in units of eight bits.
  • For example, in the example shown in Table 3, 6 reserved bits are added to allow transmission/parsing for constantFrameRate to be performed in units of eight bits. In the case of numTemporalLayers, five reserved bits are added to allow transmission/parsing to be performed in units of eight bits. Further, 6 reserved bits are added so that transmission/parsing for lengthSizeMinusOne is performed in units of eight bits.
  • As described above in connection with Table 2, constantFrameRate being 0 indicates that the stream may or may not have a constant frame rate. constantFrameRate being 1 indicates that the stream has a constant frame rate. constantFrameRate being 2 indicates that the representation of each temporal layer in the stream has a constant frame rate.
  • Accordingly, not one bit but two bits are assigned to constantFrameRate.
  • According to embodiment 1-1, parsing may be simply performed. Since syntax elements may be simply parsed in units of eight bits, a parser may be simply implemented.
  • Further, one pass/one cycle parsing is made possible with an eight-bit parser. For example, if the eight-bit parser parses syntax elements in the conventional HEVCDecoderConfigurationRecord, an additional process is required to extract the syntax elements, constantFrameRate, numTemporalLayers, and lengthSizeMinusOne. However, application of embodiment 1-1 eliminates the need for an additional process.
  • Although in Table 4 the reserved bit is added before the syntax element so that transmission/parsing is performed in units of eight bits, the present invention is not limited thereto. The reserved bit may be added behind the syntax element so that transmission/parsing for the syntax element is performed in units of eight bits.
  • Further, although in Table 4, parsing is performed in units of eight bits, for example, the present invention is not limited thereto. For example, in case a parser that performs parsing not in units of eight bits but in units of X bits is put to use, the syntax element may be adapted to be transmitted/parsed in units of X bits. At this time, a reserved bit may be added before or behind the syntax element so that transmission/parsing is performed in units of eight bits per syntax element.
  • Embodiment 1-2 Minimize Use of Reserved Bits in Signaling Syntax Elements
  • In HEVCDecoderConfigurationRecord according to embodiment 1-2, a syntax element is signaled in a compact form, and use of reserved bits is minimized. The reserved bits may be used as the last means to allow the entire HEVCDecoderConfigurationRecord length to be byte-aligned.
  • Table 5 shows an example of HEVCDecoderConfigurationRecord according to embodiment 1-2.
  • TABLE 5
    aligned(8) class HEVCDecoderConfigurationRecord {
      unsigned int(8) configurationVersion = 1;
      unsigned int(8) ProfileIndication;
      unsigned int(8) profileCompatibility;
      unsigned int(8) LevelIndication;
      unsigned int(2) chromaFormat;
      unsigned int(3) bitDepthLumaMinus8;
      unsigned int(3) bitDepthChromaMinus8;
      bit(16) avgFrameRate;
      bit(1) reserved = ‘1’ b;
      bit(2) constantFrameRate;
      bit(3) numTemporalLayers;
      unsigned int(2) lengthSizeMinusOne;
      unsigned int(16) numInitializationNalus;
      for (i=0; i< numInitializationNalus; i++) {
        unsigned int(16) nalUnitLength;
        bit(8*nalUnitLength) nalUnit;
      }
    }
  • In the example shown in Table 5, only one reserved bit is used to byte-aligned the entire HEVCDecoderConfigurationRecord.
  • The reserved bit is minimally used as necessary so that single syntax elements may be transmitted/parsed in units of eight bits. For example, the reserved bit may be added to a syntax element(s) that has(have) bits fewer than eight bits so that the syntax elements may be transmitted/parsed in units of eight bits.
  • Use of HEVCDecoderConfigurationRecord according to embodiment 1-2 enables compact signaling with a smaller number of bits as compared with using the conventional HEVCDecoderConfigurationRecord.
  • 2. Method of Signaling NAL Unit in HEVC Decoder Configuration Record (HEVCDecoderConfigurationRecord)
  • A method of signaling an initialization NAL unit in HEVCDecoderConfigurationRecord matters alongside or separately from adjustment of syntax elements as per the above-described unit of parsing/transmission.
  • In AVCDecoderConfigurationRecord of Table 1, SPS, PPS, APS, and SEI messages are being signaled in individual arrays, and in HEVCDecoderConfigurationRecord of Table 2, NAL units of VPS (Video Parameter Set), SPS (Sequence Parameter Set), and PPS (Picture Parameter Set) are mixed and signaled.
  • At this time, an APS (Adaptation Parameter Set) adaptively available may be transmitted in HEVCDecoderConfigurationRecord as necessary.
  • Since HEVCDecoderConfigurationRecord is information to specify an initial configuration of a decoder, the NAL unit transmitted in HEVCDecoderConfigurationRecord is referred to as initialization NAL unit in this disclosure for ease of description.
  • Like in HEVCDecoderConfigurationRecord of Table 2, in case initialization NAL units are mixed, the parser of HEVCDecoderConfigurationRecord should refer to the NAL unit header to be aware of the type of the initialization NAL unit parsed.
  • In this case, the parser's operation and the entire structure of HEVCD file format are complicated, and more burden may be put on the parser.
  • Accordingly, there is a need for the HEVC file format not to be involved in the details of HEVC encoding/decoding, i.e., to reduce the burden on the parser and to enable simplified process of information required at the file format level processed in the system.
  • According to the present invention, HEVCDecoderConfigurationRecord is configured to enable the information required to treat HEVC files to be available at the file format level. Specifically, in HEVCDecoderConfigurationRecord according to the present invention, the parser does not refer to the NAL unit header information or lower-level information and may recognize the type of NAL unit using only the information on HEVCDecoderConfigurationRecord.
  • To the end, either or both of the following embodiments may be used.
  • Embodiment 2-1 Case of Adding Type Information for Distinguishing Initialization NAL Units from Each Other
  • Although it is possible to identify the type of additional NAL unit of the type information to distinguish initialization NAL units by parsing the first byte of the header information in the initialization NAL unit, information necessary to treat the HEVC file cannot be used at the system level (e.g., file format level) but is instead obtained by referring to the low-level information as described above.
  • In embodiment 2-1, the type of initialization NAL unit is signaled in HEVCDecoderConfigurationRecord. Specifically, in HEVCDecoderConfigurationRecord, information regarding the type and length of the initialization NAL unit per initialization NAL unit are transmitted in HEVCDecoderConfigurationRecord, and the corresponding initialization NAL unit is subsequently transmitted.
  • Table 6 shows an example of HEVCDecoderConfigurationRecord according to embodiment 2-1.
  • TABLE 6
    aligned(8) class HEVCDecoderConfigurationRecord {
      unsigned int(8) configurationVersion = 1;
      unsigned int(8) ProfileIndication;
      unsigned int(8) profileCompatibility;
      unsigned int(8) LevelIndication;
      bit(6) reserved = ‘111111’ b;
      unsigned int(2) chromaFormat;
      bit(5) reserved = ‘11111’ b;
      unsigned int(3) bitDepthLumaMinus8;
      bit(5) reserved = ‘11111’ b;
      unsigned int(3) bitDepthChromaMinus8;
      bit(16) avgFrameRate;
      bit(2) constantFrameRate;
      bit(3) numTemporalLayers;
      bit(1) reserved = ‘1’ b;
      unsigned int(2) lengthSizeMinusOne;
      unsigned int(16) numInitializationNalus;
      for (i=0; i< numInitializationNalus; i++) {
        bit(2) initializationNalUnitType;
        unsigned int(14) nalUnitLength;
        bit(8*nalUnitLength) nalUnit;
      }
    }
  • In Table 6, the initialization NAL unit type indicator, initializationNalUnitType, specifies the type of an associated initialization NAL unit.
  • For example, in case the type of initialization NAL unit transmitted in HEVCDecoderConfigurationRecord is SPS, PPS, APS, or SEI, initializationNalUnitType may indicate which one of the types each NAL unit per initialization NAL unit.
  • Table 7 shows an example table used to make the initializationNalUnitType value correspond to the initialization NAL unit type in case the type of initialization NAL unit transmitted in HEVCDecoderConfigurationRecord is SPS, PPS, APS, or SEI, according to the present invention.
  • TABLE 7
    InitializationNalUnitType Type of initialization NAL unit
    0 SPS (Sequence Parameter Set)
    1 PPS (Picture Parameter Set)
    2 APS (Adaptation Parameter Set)
    3 SEI (Supplememtal Enhancement
    Information)
  • Although in Table 7 the type of initialization NAL unit transmitted in HEVCDecoderConfigurationRecord is SPS, PPS, APS, or SEI, for example, the present invention is not limited thereto. For example, the adaptively used parameter set, APS, is not used, and transmission of VPS may be needed instead.
  • Table 8 shows an example table used to make the initializationNalUnitType value correspond to the initialization NAL unit type in case the type of initialization NAL unit transmitted in HEVCDecoderConfigurationRecord is SPS, PPS, VPS, or SEI, according to the present invention.
  • TABLE 8
    InitializationNalUnitType Type of initialization NAL unit
    0 VPS (Video Parameter Set)
    1 SPS (Sequence Parameter Set)
    2 PPS (Picture Parameter Set)
    3 SEI (Supplememtal Enhancement
    Information)
  • Further, the type of initialization NAL unit transmitted in HEVCDecoderConfigurationRecord may be one of VPS, SPS, PPS, APS, and SEI.
  • Table 9 shows an example table used to make the initializationNalUnitType value correspond to the initialization NAL unit type in case the type of initialization NAL unit transmitted in HEVCDecoderConfigurationRecord is VPS, SPS, PPS, APS, or SEI, according to the present invention.
  • TABLE 9
    InitializationNalUnitType Type of initialization NAL unit
    0 VPS (Video Parameter Set)
    1 SPS (Sequence Parameter Set)
    2 PPS (Picture Parameter Set)
    3 APS (Adaptation Parameter Set)
    4 SEI (Supplememtal Enhancement
    Information)
  • In Tables 7 to 9, the PPS (Picture Parameter Set) is a syntax structure including a syntax element indicating parameter information applied to 0 or more pictures. The syntax element included in the PPS may be referenced as required by the syntax element of the slice segment header.
  • The SPS (Sequence Parameter Set) is a syntax structure including a syntax element indicating parameter information applied to 0 or more coded video sequences. The syntax element included in the SPS may be referenced as required by the syntax element in the PPS.
  • The VPS (Video Parameter Set) is a syntax structure including a syntax element indicating parameter information applied to 0 or more coded video sequences. The syntax element included in the VPS may be referenced as required by the syntax element in the SPS.
  • The SEI (Supplemental Enhancement Information) message is information added to the bit stream to effectively use videos to fit for various purposes.
  • HEVCDecoderConfigurationRecord may indicate at the system level the type of each NAL unit transmitted in HEVCDecoderConfigurationRecord using any one of Tables 7 to 9.
  • For example, the terminal at the receiving side (system at the decoder side) may parse initializationNalUnitType in HEVCDecoderConfigurationRecord to grasp the type of a corresponding NAL unit according to the initializationNalUnitType value.
  • In Table 6, nalUnitLength indicates the length of initialization NAL unit indicated by initializationNalUnitType.
  • In Table 6, nalUnit is an initialization NAL unit indicated by initializationNalUnitType. In case Table 7 is used, nalUnit may be one of SPS, PPS, APS, and SEI. In case Table 8 is used, nalUnit may be any one of VPS, SPS, PPS, and SEI. Further, in case Table 9 is used, nalUnit may be one of VPS, SPS, PPS, APS, and SEI.
  • Referring to Table 6, if the number of initialization NAL units included in HEVCDecoderConfigurationRecord is specified by numInitializationNalus, the type and length of the initialization NAL units are sequentially indicated as many as the number of initialization NAL units, and the corresponding initialization NAL units are transmitted.
  • Although in Table 6 initializationNalUnit and nalUnit are mixed, this for the purpose of indicating that the NAL unit transmitted in HEVCDecoderConfigurationRecord is the initialization NAL unit while simply describing HEVCDecoderConfigurationRecord. The related expressions may be interchangeably used or one of them alone may be used for consistency.
  • Table 10 shows an example of HEVCDecoderConfigurationRecord according to embodiment 2-1, in case information regarding the initialization NAL unit transmitted in HEVCDecoderConfigurationRecord is simply represented using ‘nalUnit’ instead of ‘initializationNalUnit.’
  • TABLE 10
    aligned(8) class HEVCDecoderConfigurationRecord {
      unsigned int(8) configurationVersion = 1;
      unsigned int(8) ProfileIndication;
      unsigned int(8) profileCompatibility;
      unsigned int(8) LevelIndication;
      bit(6) reserved = ‘111111’ b;
      unsigned int(2) chromaFormat;
      bit(5) reserved = ‘11111’ b;
      unsigned int(3) bitDepthLumaMinus8;
      bit(5) reserved = ‘11111’ b;
      unsigned int(3) bitDepthChromaMinus8;
      bit(16) avgFrameRate;
      bit(2) constantFrameRate;
      bit(3) numTemporalLayers;
      bit(1) reserved = ‘1’ b;
      unsigned int(2) lengthSizeMinusOne;
      unsigned int(16) numNalus;
      for (i=0; i< numNalus; i++) {
        bit(2) nalUnitType;
        unsigned int(14) nalUnitLength;
        bit(8*nalUnitLength) nalUnit;
      }
    }
  • Although in Table 10 ‘nalUnit,’ instead of ‘initializationNalUnit,’ is used to express the information regarding the NAL unit, the details are the same as those described above in connection with Table 6.
  • Although in Tables 6 and 10, in HEVCDecoderConfigurationRecord, the NAL unit type is indicated per initialization NAL unit, the present invention is not limited thereto. For example, in HEVCDecoderConfigurationRecord, the length of each initialization NAL unit may be indicated per NAL unit type, and the initialization NAL unit may be transmitted.
  • Table 11 shows another example of HEVCDecoderConfigurationRecord according to embodiment 2-1.
  • TABLE 11
      aligned(8) class HEVCDecoderConfigurationRecord {
      unsigned int(8) configurationVersion = 1;
      unsigned int(2) profile_space;
      unsigned int(1) tier_flag;
      unsigned int(5) profile_idc;
      unsigned int(32) profile_compatibility_indications;
      unsigned int(16) constraint_indicator_flags;
      unsigned int(8) level_idc;
      unsigned int(8) min_spatial_segmentation_idc;
      bit(6) reserved = ‘111111’ b;
      unsigned int(2) chromaFormat;
      bit(5) reserved = ‘11111’ b;
      unsigned int(3) bitDepthLumaMinus8;
      bit(5) reserved = ‘11111’ b;
      unsigned int(3) bitDepthChromaMinus8;
      bit(16) avgFrameRate;
      bit(2) constantFrameRate;
      bit(3) numTemporalLayers;
      bit(1) temporalIdNested;
      unsigned int(2) lengthSizeMinusOne;
      unsigned int(8) numOfNalUnitType
      for (j=0; j< numOfNalUnitType; j++) {
        unsigned int(8) numOfNalUnitType
        unsigned int(6) NAL_unit_type;
        unsigned int(16) numNalus;
        for (i=0; i< numNalus; i++) {
          unsigned int(16) nalUnitLength;
          bit(8*nalUnitLength) nalUnit;
         }
        }
    }
  • In Table 11, numOfNalUnitType indicates the number of NAL unit types indicated in HEVCDecoderConfigurationRecord, and NAL_unit_type specifies an NAL unit type.
  • numNalus indicates the number of initialization NAL units corresponding to the NAL unit type specified by NAL_unit_type.
  • Referring to Table 11, the length of each initialization NAL unit belonging to the NAL unit type is sequentially indicated as many as the number of the initialization NAL units corresponding to the NAL unit type specified by NAL_unit_type, and the initialization NAL unit is transmitted.
  • Although in Tables 6, 10 and 11, the initialization NAL unit(s) corresponding to the NAL unit type(s) in HEVCDecoderConfigurationRecord is(are) included in one NAL unit array, the present invention is not limited thereto. For example, the present invention also applies to the case where the initialization NAL units corresponding to the NAL unit type(s) are included in one or more NAL unit arrays.
  • Table 12 shows still another example of HEVCDecoderConfigurationRecord according to embodiment 2-1.
  • TABLE 12
    aligned(8) class HEVCDecoderConfigurationRecord {
      unsigned int(8) configurationVersion = 1;
      unsigned int(2) profile_space;
      unsigned int(1) tier_flag;
      unsigned int(5) profile_idc;
      unsigned int(32) profile_compatibility_indications;
      unsigned int(16) constraint_indicator_flags;
      unsigned int(8) level_idc;
      unsigned int(8) min_spatial_segmentation_idc;
      bit(6) reserved = ‘111111’ b;
      unsigned int(2) chromaFormat;
      bit(5) reserved = ‘11111’ b;
      unsigned int(3) bitDepthLumaMinus8;
      bit(5) reserved = ‘11111’ b;
      unsigned int(3) bitDepthChromaMinus8;
      bit(16) avgFrameRate;
      bit(2) constantFrameRate;
      bit(3) numTemporalLayers;
      bit(1) temporalIdNested;
      unsigned int(2) lengthSizeMinusOne;
      unsigned int(8) numOfArrays;
      for (j=0; j < numOfArrays; j++) {
        bit(1) array_completeness;
        unsigned int(1) reserved = 0;
        unsigned int(6) NAL_unit_type;
        unsigned int(16) numNalus;
        for (i=0; i< numNalus; i++) {
          unsigned int(16) nalUnitLength;
          bit(8*nalUnitLength) nalUnit;
        }
      }
    }
  • Referring to Table 12, numArrays indicates the number of the arrays of the initialization NAL units of the type(s) indicated in HEVCDecoderConfigurationRecord.
  • array_completeness indicates whether the initialization NAL unit(s) corresponding to the initialization NAL unit type in HEVCDecoderConfigurationRecord is(are) included in one array (of NAL units). For example, array_completeness being 1 indicates that all the NAL units of a given type are included in a following array, and array_completeness being 0 indicates that among the initialization NAL units of a given type, the initialization NAL units that are not in the following array are present in the stream.
  • numNalus indicates the number of initialization NAL units of the NAL unit type in HEVCDecoderConfigurationRecord for the stream to which HEVCDecoderConfigurationRecord applies.
  • Referring to Table 12, the NAL unit type and the number of initialization NAL units corresponding to the NAL unit type are indicated per initialization NAL unit array. At this time, as many as the number of initialization NAL units corresponding to the NAL unit type, the length of each initialization NAL unit is sequentially indicated, and the initialization NAL unit is transmitted.
  • Embodiment 2-2 Case of Transmitting Different Types of Initialization NAL Units in Different Arrays
  • In embodiment 2-2, initialization NAL units are transmitted per NAL unit type in HEVCDecoderConfigurationRecord. Specifically, the initialization NAL units of different NAL unit types in HEVCDecoderConfigurationRecord may be transmitted in different arrays per NAL unit type.
  • For example, if the type of NAL unit transmitted in HEVCDecoderConfigurationRecord is some or all of VPS, SPS, PPS, SEI, and APS, for the NAL unit corresponding to each parameter set/message, the initialization NAL units are transmitted in different arrays per parameter set/message. Accordingly, the NAL units corresponding to the VPS are collectively transmitted, and the initialization NAL units corresponding to the SPS are transmitted in other array(s), and the initialization NAL units corresponding to the PPS may be transmitted in still other array(s).
  • At this time, the order of arrays in DecorderConfigurationRecord may be determined based on the predicted number of initial units per NAL unit type.
  • For example, the array(s) for signaling the initialization NAL units (SPS NAL units) whose NAL unit type is the SPS may appear earlier than the array(s) for signaling the initialization NAL units of other types. Subsequently, the array(s) for signaling the initialization NAL units (PPS NAL units) whose NAL unit type is the PPS may be positioned.
  • The array(s) for signaling the initialization NAL units (SEI NAL units) whose NAL unit type is the SEI message may be then positioned.
  • If the APS is used, the array(s) for signaling the initialization NAL units (APS NAL units) whose NAL unit type is the APS may come last.
  • Further, if the VPS is used, the array(s) for signaling the initialization NAL units (VPS NAL units) whose NAL unit type is the VPS may come first.
  • Table 13 shows an example of DecoderConfigurationRecord according to embodiment 2-2.
  • TABLE 13
    aligned(8) class HEVCDecoderConfigurationRecord {
      unsigned int(8) configurationVersion = 1;
      unsigned int(8) ProfileIndication;
      unsigned int(8) profileCompatibility;
      unsigned int(8) LevelIndication;
      bit(6) reserved = ‘111111’ b;
      unsigned int(2) chromaFormat;
      bit(5) reserved = ‘11111’ b;
      unsigned int(3) bitDepthLumaMinus8;
      bit(5) reserved = ‘11111’ b;
      unsigned int(3) bitDepthChromaMinus8;
      bit(16) avgFrameRate;
      bit(2) constantFrameRate;
      bit(3) numTemporalLayers;
      bit(1) reserved = ‘1’ b;
      unsigned int(2) lengthSizeMinusOne;
      unsigned int(8) numOfSequenceParameterSets;
      for (i=0; i< numOfSequenceParameterSets; i++) {
        unsigned int(16) sequenceParameterSetLength;
        bit(8* sequenceParameterSetLength)
        sequenceParameterSetNALUnit;
      }
      unsigned int(8) numOfPictureParameterSets;
      for (i=0; i< numOfPictureParameterSets; i++) {
        unsigned int(16) pictureParameterSetLength;
        bit(8* pictureParameterSetLength)
        pictureParameterSetNALUnit;
      }
      unsigned int(8) numOfDeclarativeSEIs;
      for (i=0; i< numOfDeclarativeSEIs; i++) {
        unsigned int(16) declarativeSeiLength;
        bit(8* declarativeSeiLength) declarativeSeiNALUnit;
      }
      unsigned int(16) numOfAdaptationParameterSets;
      for (i=0; i< numOfAdaptationParameterSets; i++) {
        unsigned int(16) adaptationParameterSetLength;
        bit(8* adaptationParameterSetLength)
        adaptationParameterSetNALUnit;
      }
    }
  • In Table 13, numOfSequenceParameterSets indicates the number of SPSs used for decoding a stream to which a decoder configuration record applies. numOfSequenceParameterSets being 0 indicates that there is no SPS in the samples of the stream, and numOfSequenceParameterSets being larger than 0 indicates that at least one SPS (for example, as many SPSs as the corresponding value) is included in the samples of the stream.
  • sequenceParameterSetLength indicates the length of SPS NAL units in bytes.
  • numOfPictureParameterSets indicates the number of PPSs used for decoding the stream to which a decoder configuration record applies. numOfPictureParameterSets being 0 indicates that there is no PPS in the samples of the stream, and numOfPictureParameterSets being larger than 0 indicates that at least one PPS (for example, as many PPSs as the corresponding value) is included in the samples of the stream.
  • pictureParameterSetLength indicates the length of PPS NAL units in bytes.
  • numOfDeclarativeSEIs indicates the number of declarative SEIs used for decoding the stream to which a corresponding applies. numOfDeclarativeSEIs being 0 indicates that there is no declarative SEI in the samples of the stream, and numOfDeclarativeSEIs being larger than 0 indicates that at least one declarative SEI (for example, as many declarative SEIs as the corresponding value) is included in the samples of the stream.
  • declartiveSeiLength indicates the length of SEI units in bytes.
  • numOfAdaptationParameterSets indicates the number of APSs used for decoding the stream to which a decoder configuration record applies. numOfAdaptationParameterSets being 0 indicates that there is no APS in the samples of the stream, and numOfAdaptationParameterSets being larger than 0 indicates that at least one APS is included in the samples of the stream.
  • adaptationParameterSetLength indicates the length of APS NAL units in bytes.
  • The example in which four NAL unit types such as SPS, PPS, declarative SEI, and APS, are included in HEVCDecoderConfigurationRecord has been described herein. However, the instant embodiment is not limited thereto.
  • For example, if the VPS, instead of the APS, is included in HEVCDecoderConfigurationRecord, signaling may be performed in the sequence of VPS, SPS, PPS, and declarative SEI in HEVCDecoderConfigurationRecord according to embodiment 2-2.
  • Embodiment 2-3 Another Case of Transmitting Different Types of Initialization NAL Units in Different Arrays
  • In the sequence of signaling the parameter set according to embodiment 2-2, all the SPSs are first signaled, then all the PPSs, then all the declarative SEIs, and lastly all the APSs.
  • Unlike this, in this embodiment, all the SPSs are first signaled, then all the declarative SEIs, then all the PPSs, and lastly, all the APSs.
  • Table 14 shows an example of DecoderConfigurationRecord according to embodiment 2-3.
  • TABLE 14
    aligned(8) class HEVCDecoderConfigurationRecord {
      unsigned int(8) configurationVersion = 1;
      unsigned int(8) ProfileIndication;
      unsigned int(8) profileCompatibility;
      unsigned int(8) LevelIndication;
      bit(6) reserved = ‘111111’b;
      unsigned int(2) chromaFormat;
      bit(5) reserved = ‘11111’b;
      unsigned int(3) bitDepthLumaMinus8;
      bit(5) reserved = ‘11111’b;
      unsigned int(3) bitDepthChromaMinus8;
      bit(16) avgFrameRate;
      bit(2) constantFrameRate;
      bit(3) numTemporalLayers;
      bit(1) reserved = ‘1’b;
      unsigned int(2) lengthSizeMinusOne;
      unsigned int(8) numOfSequenceParameterSets;
      for (i=0, i< numOfSequenceParameterSets; i++) {
        unsigned int(16) sequenceParameterSetLength;
        bit(8* sequenceParameterSetLength)
        sequenceParameterSetNALUnit;
      }
      unsigned int(8) numOfDeclarativeSEIs;
      for (i=0; i< numOfDeclarativeSEIs; i++) {
        unsigned int(16) declarativeSeiLength;
        bit(8* declarativeSeiLength) declarativeSeiNALUnit;
      }
      unsigned int(8) numOfPictureParameterSets;
      for (i=0; i< numOfPictureParameterSets; i++) {
        unsigned int(16) pictureParameterSetLength;
        bit(8* pictureParameterSetLength)
        pictureParameterSetNALUnit;
      }
      unsigned int(16) numOfAdaptationParameterSets;
      for (i=0, i< numOfAdaptationParameterSets; i++) {
        unsigned int(16) adaptationParameterSetLength;
        bit(8* adaptationParameterSetLength)
        adaptationParameterSetNALUnit;
      }
    }
  • In Table 14, numOfSequenceParameterSets indicates the number of SPSs used for decoding a stream to which a decoder configuration record applies. numOfSequenceParameterSets being 0 indicates that there is no SPS in the samples of the stream, and numOfSequenceParameterSets being larger than 0 indicates that at least one SPS (for example, as many SPSs as the corresponding value) is included in the samples of the stream.
  • sequenceParameterSetLength indicates the length of SPS NAL units in bytes.
  • numOfDeclarativeSEIs indicates the number of declarative SEIs used for decoding the stream to which a corresponding applies. numOfDeclarativeSEIs being 0 indicates that there is no declarative SEI in the samples of the stream, and numOfDeclarativeSEIs being larger than 0 indicates that at least one declarative SEI (for example, as many declarative SEIs as the corresponding value) is included in the samples of the stream.
  • declartiveSeiLength indicates the length of SEI units in bytes.
  • numOfPictureParameterSets indicates the number of PPSs used for decoding the stream to which a decoder configuration record applies. numOfPictureParameterSets being 0 indicates that there is no PPS in the samples of the stream, and numOfPictureParameterSets being larger than 0 indicates that at least one PPS (for example, as many PPSs as the corresponding value) is included in the samples of the stream.
  • pictureParameterSetLength indicates the length of PPS NAL units in bytes.
  • numOfAdaptationParameterSets indicates the number of APSs used for decoding the stream to which a decoder configuration record applies. numOfAdaptationParameterSets being 0 indicates that there is no APS in the samples of the stream, and numOfAdaptationParameterSets being larger than 0 indicates that at least one APS is included in the samples of the stream.
  • adaptationParameterSetLength indicates the length of APS NAL units in bytes.
  • The example in which four NAL unit types such as SPS, declarative SEI, PPS, and APS, are included in HEVCDecoderConfigurationRecord has been described herein. However, the instant embodiment is not limited thereto.
  • For example, if the VPS, instead of the APS, is included in HEVCDecoderConfigurationRecord, signaling may be performed in the sequence of VPS, SPS, declarative SEI, and PPS in HEVCDecoderConfigurationRecord according to embodiment 2-3.
  • Embodiment 2-4 Case of Separating Different Types of Initial NAL Units from Each Other in a Multi-Array
  • Unlike in the above-described embodiments, in this embodiment, each type of the NAL units may be signaled in separate arrays from each other. Further, each type of NAL units may be signaled in a single array.
  • In other words, the NAL unit types (for example, VPS, SPS, PPS, SEI, APS, etc.) may be signaled in separate arrays from each other. All the NAL units belonging to each NAL unit type may be signaled in the same array or may be signaled together with the NAL units belonging to a different NAL unit type in different array(s).
  • Information indicating the type and number of NAL units is first signaled in the array for each type of the NAL units. Or, information indicating the type and number of NAL units may be signaled earlier than the array for each type of the NAL units.
  • The order of the array in HEVCDecoderConfigurationRecord may be determined based on the number of NAL units for each NAL unit type or based on what the NAL unit type for the array is.
  • For example, an array for signaling an SPS NAL unit may come earlier than an array for other NAL unit type. An array for signaling a PPS NAL unit may come thereafter, which is followed by an array for signaling for an SEI NAL unit. Lastly, an array for signaling an APS NAL unit may come.
  • The order of coming in the order of SPS NAL unit→PPS NAL unit→SEI NAL unit→APS NAL unit may be previously determined considering the number of the NAL units belonging to each NAL unit type or cross reference.
  • Instead of SPS, PPS, declarative SEI, and APS, VPS, SPS, PPS, and SEI may be used as the NAL unit types.
  • For example, an array for signaling a VPS NAL unit may come earlier than an array for other NAL unit type. An array for signaling an SPS NAL unit may come thereafter, which is followed by an array for signaling for a declarative PPS NAL unit. Lastly, an array for signaling an SEI NAL unit may come.
  • Table 15 shows an example of HEVCDecoderConfigurationRecord according to embodiment 2-4.
  • TABLE 15
    aligned(8) class HEVCDecoderConfigurationRecord {
      unsigned int(8) configurationVersion = 1;
      unsigned int(8) ProfileIndication;
      unsigned int(8) profileCompatibility;
      unsigned int(8) LevelIndication;
      bit(6) reserved = ‘111111’b;
      unsigned int(2) chromaFormat;
      bit(5) reserved = ‘11111’b;
      unsigned int(3) bitDepthLumaMinus8;
      bit(5) reserved = ‘11111’b;
      unsigned int(3) bitDepthChromaMinus8;
      bit(16) avgFrameRate;
      bit(2) constantFrameRate;
      bit(3) numTemporalLayers;
      bit(1) reserved = ‘1’b;
      unsigned int(2) lengthSizeMinusOne;
      unsigned int(8) numOfInitParameterGroups;
      for (i=0; i< numOfInitParameterGroups; i++) {
       bit(6) reserved = ‘111111’b;
       bit(2) initializationNalUnitType;
       unsigned int(8) numInitializationNalus;
       for (j=0; j< numInitializationNalus; j++) {
        unsigned int(16) nalUnitLength;
        bit(8* sequenceParameterSetLength) nalUnit;
       }
      }
    }
  • In Table 15, ProfileIndication includes a profile code (profile_idc) for a stream to which the instant HEVCDecoderConfigurationRecord applies. Although ProfileIndication is put to use in Table 15, profile_idc, instead of ProfileIndication, may be used. The profile code may be defined in the context for specifying an HEVC technology or the context for interpreting the HEVC technology. For example, the profile code may be defined in ISO/IEC 23008-HEVC.
  • profileCompatibility is a byte defined to be the same as a byte generated between the profile code (profile_idc) and the level code (level_idc) in the SPS (Sequence Parameter Set) for the stream to which present HEVCDecoderConfigurationRecord. The profile code and the level code may be defined in the context for specifying an HEVC technology or the context for interpreting the HEVC technology. For example, the level code and profile code may be defined in ISO/IEC 23008-HEVC.
  • LevelIndication includes the level code (level_idc). Although LevelIndication is put to use in Table 15, level_idc, instead of LevelIndication, may be used. The level code may be defined in the context for specifying an HEVC technology or the context for interpreting the HEVC technology. For example, the level code may be defined in ISO/IEC 23008-HEVC.
  • For example, in case the present bit stream follows the HEVC technology, following the context defining the profile code, profile_idc may have the current CVS (Coded Video Sequence) indicate the profile, and level_idc may indicate a level that may be followed by the current CVS, that is, a level not more than a specific level.
  • chromaFormat includes a chroma format indicator (chroma_format indicator) indicated by the chroma_format_idc parameter for the stream to which HEVCDecoderConfigurationRecord applies. chroma_format_idc may be defined in the context for specifying an HEVC technology or the context for interpreting the HEVC technology. For example, chroma_format_idc may be defined in ISO/IEC 23008-HEVC.
  • bitDepthLumaMinus8 includes a luma bit depth indicator indicated by the bit_depth_luma_minus8 parameter for the stream to which HEVCDecoderConfigurationRecord applies. bit_depth_luma_minus8 may be defined in the context for specifying an HEVC technology or the context for interpreting the HEVC technology. For example, bit_depth_luma_minus8 may be defined in ISO/IEC 23008-HEVC.
  • bitDepthLumaMinus8 includes a chroma bit depth indicator indicated by the bit_depth_chroma_minus8 parameter for the stream to which HEVCDecoderConfigurationRecord applies. bit_depth_chroma_minus8 may be defined in the context for specifying an HEVC technology or the context for interpreting the HEVC technology. For example, bit_depth_chroma_minus8 may be defined in ISO/IEC 23008-HEVC.
  • avgFrameRate indicates an average frame rate on a per-frame basis for the stream to which HEVCDecoderConfigurationRecord applies. avgFrameRate being 0 indicates that no average frame rate has been specified. That is, avgFrameRate being 0 indicates a non-specified average frame rate.
  • constantFrameRate being 1 indicates that the stream to which this HEVCDecoderConfigurationRecord applies has a constant frame rate. constantFrameRate being 2 indicates that the representation of each temporal layer in the stream has a constant frame rate. constantFrameRate being 0 indicates that the stream may or may not be of constant frame rate.
  • numTemporalLayers being larger than 1 indicates that the stream to which this HEVCDecoderConfigurationRecord applies is temporally scalable and includes the same number of layers as the numTemporalLayers value. numTemporalLayers being 1 indicates that the stream is not temporally scalable. numTemporalLayers being 0 indicates that it is not known whether the stream is temporally scalable.
  • lengthSizeMinusOne+1 indicates, on a per-byte basis, the length of NalUnitLength field in the HEVC video sample in the stream to which this HEVCDecoderConfigurationRecord applies. For example, a one-bite size may be indicated as lengthSizeMinusOne being 0. The value of this field may have any one of 0, 1, or 3 corresponding to the lengths each coded in one, two, or four bytes.
  • numOfInitParameterGroups corresponds to the number of NAL unit types present in HEVCDecoderConfigurationRecord. As can be seen from Tables 7 to 9, a parameter type corresponds to a NAL unit type. For example, referring to the example shown in Table 8, VPS may correspond to NAL unit type 0, SPS to NAL unit type 1, and PPS to NAL unit type 2.
  • initializationNalUnitType specifies a related initial NAL unit type. Examples of the NAL unit types specified in this embodiment are shown in Table 7, 8, or 9.
  • In HEVCDecoderConfigurationRecord, the NAL unit types may appear in predetermined order. For example, in case the NAL unit types shown in Table 7 are used, SPS, PPS, SEI, and APS may appear in this order in HEVCDecoderConfigurationRecord. In case the NAL unit types shown in Table 8 are used, VPS, SPS, PPS, and SEI may appear in this order in HEVCDecoderConfigurationRecord. Further, in case the NAL unit types shown in Table 9 are used, VPS, SPS, PPS, SEI, and APS may appear in this order in HEVCDecoderConfigurationRecord.
  • numInitializationNalus may indicate the number of NAL units per NAL unit type included in the configuration record for the stream to which HEVCDecoderConfigurationRecord applies. For example, numInitializationNalus may indicate the number of VPS NAL units, the number of SPS NAL units, the number of PPS NAL units, the number of (declarative) SEI NAL units, and/or the number of APS NAL units.
  • The declarative SEI NAL unit includes an SEI message of ‘declarative’ nature, i.e., an SEI message providing information about the stream as a whole. An example of such SEI is a user-data SEI. If the value is 0, at least one SPS and one PPS are included in the stream samples.
  • nalUnitLength indicates the length of NAL unit in bytes.
  • nalUnit includes VPS, SPS, PPS, APS or declarative SEI NAL units. That is, nalUnit in Table 15 includes NAL units belonging to the NAL unit type specified by initializationNalUnitType. VPS, SPS, PPS, APS, or declarative SEI NAL units may be defined in the context for specifying an HEVC technology or in the context for interpreting the HEVC technology. For example, the VPS, SPS, PPS, APS, or declarative SEI NAL units may be defined in ISO/IEC 23008-HEVC.
  • Referring to Table 15, the parameter group of numOfInitParameterGroups corresponds to the NAL unit type as described in connection with Tables 7 to 9. Accordingly, in HEVCDecoderConfigurationRecord, what NAL unit type it is indicated for each NAL unit type (initializationNalUnitType) and the number of NAL units belonging to a corresponding NAL unit type is indicated (numInitializationNalus). Subsequently, for the NAL units belonging to a corresponding NAL unit type, the length of the NAL units is indicated (nalUnitLength) and the NAL units are stored (nalUnit).
  • Assignment of bits to the nalUnit may be conducted on a per-eight bits basis based on the length of the NAL units. In this case, the assignment may be based on the NAL unit length of a particular NAL unit type or the length of a NAL unit stored. In the example shown in Table 15, per-eight bits bit assignment is performed based on the length of SPS (sequenceParameterSetLength).
  • Although in Table 15 initializationNalUnit and nalUnit are mixed, this for the purpose of indicating that the NAL unit transmitted in HEVCDecoderConfigurationRecord is the initialization NAL unit while simply describing HEVCDecoderConfigurationRecord. The related expressions may be interchangeably used or one of them alone may be used for consistency.
  • Table 16 shows another example of HEVCDecoderConfigurationRecord according to embodiment 2-4, in case information regarding the initialization NAL unit transmitted in HEVCDecoderConfigurationRecord is simply represented using ‘nalUnit’ instead of ‘initializationNalUnit.’
  • TABLE 16
    aligned(8) class HEVCDecoderConfigurationRecord {
      unsigned int(8) configurationVersion = 1;
      unsigned int(8) ProfileIndication;
      unsigned int(8) profileCompatibility;
      unsigned int(8) LevelIndication;
      bit(6) reserved = ‘111111’b;
      unsigned int(2) chromaFormat;
      bit(5) reserved = ‘11111’b;
      unsigned int(3) bitDepthLumaMinus8;
      bit(5) reserved = ‘11111’b;
      unsigned int(3) bitDepthChromaMinus8;
      bit(16) avgFrameRate;
      bit(2) constantFrameRate;
      bit(3) numTemporalLayers;
      bit(1) reserved = ‘1’b;
      unsigned int(2) lengthSizeMinusOne;
      unsigned int(8) numOfParameterGroups;
      for (i=0; i< numOfParameterGroups; i++) {
       bit(6) reserved = ‘111111’b;
       bit(2) NalUnitType;
       unsigned int(8) numNalus;
       for (j=0; j< numNalus; j++) {
        unsigned int(16) nalUnitLength;
        bit(8* nalUnitLength) nalUnit;
       }
      }
    }
  • In the example shown in Table 16, unlike the example shown in Table 15, bit assignment to nalUnit is conducted based on the length of a corresponding NAL unit (nalUnitLength).
  • Although the NAL unit is included in DecoderConfigurationRecord and is transmitted according to this disclosure, for ease of description, the present invention is not limited thereto. As described above, the NAL unit may be stored in DecoderConfigurationRecord and may be transmitted over a network. Further, the NAL unit may be stored in DecoderConfigurationRecord, and DecoderConfigurationRecord may be stored in a storage medium and transferred.
  • Further, although DecoderConfigurationRecord or a stream including DecoderConfigurationRecord being received is set forth in this disclosure, this merely for convenience of description, and the present invention is not limited thereto. As used herein,
  • DecoderConfigurationRecord or a stream including DecoderConfigurationRecord being received may mean that DecoderConfigurationRecord or the stream including DecoderConfigurationRecord is received over a network or that DecoderConfigurationRecord or the stream including DecoderConfigurationRecord is obtained from a storage medium.
  • Meanwhile, each embodiment in embodiment 2, i.e., embodiment 2-1, embodiment 2-2, embodiment 2-3, and embodiment 2-4, may apply as a separate method, or the embodiments may apply together.
  • For example, also in the case of embodiment 2-4, a multi-layer structure may apply to a single NAL unit type. For example, also in the case shown in Table 15 or 16, the number of arrays of NAL units for the initial NAL unit type(s) indicated through
  • HEVCDecoderConfigurationRecord may be indicated.
  • In HEVCDecoderConfigurationRecord, it is indicated whether the initialization NAL unit(s) corresponding to a particular initialization NAL unit type is(are) included in one array (of NAL units). For example, as in the example shown in Table 12, array_completeness being 1 may indicate that all the NAL units of a given type are included in a following array, and array_completeness being 0 may indicate that among the initialization NAL units of a given type, the initialization NAL units that are not in the following array are present in the stream.
  • Further, in case a multi-array structure applies, the type of an initial NAL unit type and the number of the NAL unit types belonging to the initial NAL unit type may be indicated for each array of the initial NAL units. At this time, as many as the number of initialization NAL units corresponding to the NAL unit type, the length of each initialization NAL unit may be sequentially indicated, and the initialization NAL unit may be transmitted(stored).
  • FIG. 2 is a flowchart schematically illustrating a method of storing video information according to the present invention. In FIG. 2, the video information may be information corresponding to some or all of the media file formats described above in connection with FIG. 1 and include decoder configuration information (DecoderConfigurationRecord).
  • Here, for ease of description, the video information storage apparatus is described to perform each step shown in FIG. 2.
  • Referring to FIG. 2, the video information storage apparatus may encode video information (S210). For example, the video information storage apparatus may encode video content based on HEVC. The video information storage apparatus may generate a NAL unit including information necessary for decoding and encoded video content.
  • The video information storage apparatus may store the NAL unit in the decoder configuration record (S220). The decoder configuration record may include information to indicate the type of NAL unit stored. At this time, the type of NAL unit may be VPS, SPS, PPS, or SEI. The decoder configuration record may be HEVCDecoderConfigurationRecord.
  • The details of the decoder configuration record have been described above in connection with FIG. 1 and the tables. For example, since the decoder configuration record may be parsed in units of predetermined bits, unless the syntax elements are in units of eight bits, the video information storage apparatus may be configured to add a reserved bit so that the bits assigned to the syntax element and the reserved bit are eight bits or multiples of eight bits.
  • The decoder configuration record may store NAL units per NAL unit type. In this case, the NAL unit type may correspond to a parameter set stored in the NAL unit.
  • Further, the decoder configuration record may also store information indicating the number of NAL units belonging to each NAL unit type per NAL unit type.
  • As described above in connection with embodiment 2-4, the NAL unit types appearing in the decoder configuration record may have a constant order. For example, the storage may be performed so that the NAL units whose NAL unit type is VPS appear earlier (or parsed earlier) in the decoder configuration record than the NAL units whose NAL unit type is SPS. Further, the storage may be performed so that the NAL units whose NAL unit type is SPS appear earlier (or parsed earlier) in the decoder configuration record than the NAL units whose NAL unit type is PPS. The storage may be performed so that the NAL units whose NAL unit type is PPS appear earlier (or parsed earlier) in the decoder configuration record than the NAL units whose NAL unit type is SEI.
  • Further, the decoder configuration record may include information indicating the type of NAL unit and information indicating the length of the NAL unit, together with the NAL unit. As described above, the NAL units may be stored in the decoder configuration record per NAL unit type, and in this case, bit assignment for storing the NAL units may be conducted at every multiple of eight bits.
  • Further, the bit assignment for storing the NAL units may be conducted based on the length of the NAL units. For example, the NAL units may be stored using the bits assigned at every multiple of the length of the NAL units to be stored. Or, the NAL units may be stored using the bits assigned at every multiple of the length of the NAL units corresponding to a particular NAL unit type.
  • Meanwhile, the number of bits assigned for storing the NAL units may be a multiple of eight while being a multiple of the length of the NAL units.
  • Although the video information storage apparatus performs the operations (S210 and S220) and configuration of a decoder configuration record, for ease of description, each step may also be performed in individual units in the video information storage apparatus.
  • FIG. 3 is a flowchart schematically illustrating a method of parsing video information according to the present invention. The video information shown in FIG. 3 may be information corresponding to some or all of the media file formats described above in connection with FIG. 1 and includes decoder configuration information (DecoderConfigurationRecord).
  • Here, for ease of description, a video information parsing apparatus performs each step shown in FIG. 3.
  • Referring to FIG. 3, the video information parsing apparatus may parse a decoder configuration record (S310). The decoder configuration record is information belonging to the file format, and parsing may be performed at the system level. By parsing the decoder configuration record, the video information parsing apparatus may obtain information regarding the profile, level, format, or bit depth of the corresponding video information. The video information parsing apparatus may obtain information regarding the type and length of NAL unit included in the decoder configuration record.
  • Further, the decoder configuration record according to the present invention includes information indicating the type of NAL unit, and thus, the video information parsing apparatus may parse the decoder configuration record to obtain the information indicating the type of NAL unit. Accordingly, the video information parsing apparatus may determine the type of NAL unit included in the decoder configuration record at the system level and may perform parsing accordingly.
  • Parsing may mean obtaining a specific value of a syntax element and/or data (information). Parsing on the decoder configuration record may be performed in units of predetermined bits. For example, the parser performing parsing in the video information parsing apparatus is an eight-bit parser, and parsing may be performed in units of eight bits.
  • Meanwhile, the decoder configuration record is the same as those described earlier in connection with FIG. 1 and the tables. For example, the decoder configuration record may include, together the information indicating the NAL unit type, the information indicating the length of the NAL unit alongside the NAL unit.
  • The decoder configuration record may store NAL units per NAL unit type. In this case, the NAL unit type may correspond to a parameter set stored in the NAL unit.
  • Further, the decoder configuration record may also store information indicating the number of NAL units belonging to each NAL unit type per NAL unit type.
  • As described above in connection with embodiment 2-4, the NAL unit types appearing in the decoder configuration record may have a constant order. For example, the storage may be performed so that the NAL units whose NAL unit type is VPS appear earlier (or parsed earlier) in the decoder configuration record than the NAL units whose NAL unit type is SPS. Further, the storage may be performed so that the NAL units whose NAL unit type is SPS appear earlier (or parsed earlier) in the decoder configuration record than the NAL units whose NAL unit type is PPS. The storage may be performed so that the NAL units whose NAL unit type is PPS appear earlier (or parsed earlier) in the decoder configuration record than the NAL units whose NAL unit type is SEI.
  • Further, the decoder configuration record may include information indicating the type of NAL unit and information indicating the length of the NAL unit, together with the NAL unit. As described above, the NAL units may be stored in the decoder configuration record per NAL unit type, and in this case, bit assignment for storing the NAL units may be conducted at every multiple of eight bits. Accordingly, the NAL units may be parsed at every eight bits or at every multiple of eight bits.
  • Further, the bit assignment for storing the NAL units may be conducted based on the length of the NAL units. For example, the NAL units may be stored using the bits assigned at every multiple of the length of the NAL units to be stored. Or, the NAL units may be stored using the bits assigned at every multiple of the length of the NAL units corresponding to a particular NAL unit type. Accordingly, the NAL units may be parsed at every multiple of the length of the NAL units.
  • Meanwhile, the number of bits assigned for storing the NAL units may be a multiple of eight while being a multiple of the length of the NAL units. In this case, the parsing may be performed at every multiple of eight bits that is also a multiple of the length of the NAL units.
  • The information stored in the decoder configuration record may be sequentially parsed based on the stored order.
  • The video information parsing apparatus may decode video information based on the parsed decoder configuration record (S320). The video information parsing apparatus may process information corresponding to the decoder configuration record based on the parsed decoder configuration record and might not process or recognize the information that does not match the decoder configuration record.
  • Hereinafter, for ease of description, decoding includes parsing and restoring video information. Further, the restoration of video information may be conducted in the video information parsing apparatus, or may be performed by a separate decoder based on a result of the parsing performed by the video information parsing apparatus.
  • The video information parsing apparatus may parse the NAL units per NAL unit type based on the parsed decoder configuration record. In case the decoder configuration record includes a plurality of NAL unit arrays, the NAL units may be parsed per array according to the type of NAL units.
  • Although the NAL units have been described in connection with FIGS. 2 and 3 for ease of description, the NAL units included in the decoder configuration record may be the initialization NAL units as described earlier.
  • FIG. 4 is a block diagram schematically illustrating a configuration of a video information storage apparatus according to the present invention. In FIG. 4, the video information may be information corresponding to some or all of the media file formats described above in connection with FIG. 1, and includes decoder configuration information (DecoderConfigurationRecord).
  • Referring to FIG. 4, the video information storage apparatus 400 includes an encoding unit 410 and a storage unit 420.
  • The encoding unit 410 may encode input video information. For example, the encoding unit 410 may encode video information using an HEVC-supportive method. The encoding unit 410 may generate an NAL unit including information necessary for decoding and encoded video content.
  • The storage unit 420 may store the generated NAL unit in the decoder configuration record. The decoder configuration record may include information indicating the type of NAL unit. At this time, the type of NAL unit may be VPS, SPS, PPS, or SEI. The details of the decoder configuration record have been described earlier.
  • FIG. 5 is a block diagram schematically illustrating a configuration of a video information parsing apparatus according to the present invention. In FIG. 5, the video information may be information corresponding to some or all of the media file formats described above in connection with FIG. 1 and includes decoder configuration information (DecoderConfigurationRecord).
  • Referring to FIG. 5, the video information parsing apparatus 500 includes a parsing unit 510 and a decoding unit 520.
  • The parsing unit 510 may parse the decoder configuration record in the file format. The parsing unit 510 may parse the decoder configuration record at the system level. The decoder configuration record includes the NAL unit and information indicating the type of the NAL unit.
  • The parsing unit 510 may parse the decoder configuration record to obtain information regarding the profile, level, format, and bit depth of the video information. Further, the parsing unit 510 may obtain the information regarding the length and type of the NAL unit included in the decoder configuration record.
  • The decoder configuration record has been described above.
  • The decoding unit 520 may decode the video information based on the decoder configuration record. The decoding unit 520 may process information corresponding to the decoder configuration record based on the parsed decoder configuration record and might not process or recognize the information that does not match the decoder configuration record.
  • For ease of description, an example in which decoding includes parsing and restoring video information has been described in connection with FIG. 5. Further, the restoration of video information may be performed by the decoding unit 520 of the video information parsing apparatus 500 or by a separate decoder from the video information parsing apparatus 500 based on a result of the parsing performed by the video information parsing apparatus 500.
  • Meanwhile, HEVCDecoderConfigurationRecord is information for specifying an initial configuration of the decoder, and accordingly, the NAL unit transmitted in HEVCDecoderConfigurationRecord has been herein referred to as the initial NAL unit. However, for ease of description, the terms “initial NAL unit” and “NAL unit” have been interchangeably used.
  • In the above-described example system, the methods are described based on the flowcharts with a series of steps or blocks, but the present invention is not limited to the order of the steps, and rather, some steps may be performed simultaneously or in different order with other steps. Further, the above-described embodiments include various aspects of examples. Accordingly, the present invention includes all other changes, modifications, and variations belonging to the following claims.

Claims (20)

What is claimed is:
1. A method of storing image information, the method comprising:
encoding image information; and
storing an NAL (Network Abstraction Layer) unit including the encoded image information in a decoder configuration record, wherein the decoder configuration record stores NAL units per NAL unit type.
2. The method of claim 1, wherein the NAL unit type corresponds to a parameter set stored in an NAL unit.
3. The method of claim 1, wherein the NAL units are stored together with information indicating the type of the NAL units.
4. The method of claim 1, wherein the decoder configuration record stores information indicating the number of NAL units per NAL unit type.
5. The method of claim 1, wherein the decoder configuration record stores the NAL units so that NAL units whose NAL unit type is a sequence parameter set appear and then NAL units whose NAL unit type is a picture parameter set appear.
6. The method of claim 1, wherein in the decoder configuration record, bits are assigned at every multiple of eight bits for storing each NAL unit.
7. The method of claim 1, wherein the decoder configuration record includes information on the length of the NAL unit, and wherein bits are assigned based on the length of the NAL unit for storing each NAL unit.
8. A method of parsing image information, the method comprising:
parsing a decoder configuration record; and
parsing an NAL unit based on the parsed decoder configuration record, wherein the decoder configuration record stores NAL units per NAL unit type.
9. The method of claim 8, wherein the NAL unit type corresponds to a parameter set stored in an NAL unit.
10. The method of claim 8, wherein the NAL units are stored together with information indicating the type of the NAL units.
11. The method of claim 8, wherein the decoder configuration record stores information indicating the number of NAL units per NAL unit type.
12. The method of claim 8, wherein the decoder configuration record stores the NAL units so that NAL units whose NAL unit type is a sequence parameter set appear and then NAL units whose NAL unit type is a picture parameter set appear.
13. The method of claim 8, wherein each NAL unit is stored in the decoder configuration record using bits assigned at every multiple of eight bits.
14. The method of claim 8, wherein the decoder configuration record includes information on the length of the NAL unit, and wherein each NAL unit is stored using bits assigned based on the length of the NAL unit.
15. An apparatus of storing image information, the apparatus comprising:
an encoding unit encoding image information; and
a storage unit storing an NAL (Network Abstraction Layer) unit including the encoded image information in a decoder configuration record, wherein the decoder configuration record stores NAL units per NAL unit type.
16. The apparatus of claim 15, wherein the NAL units are stored together with information indicating the type of the NAL units.
17. The apparatus of claim 16, wherein the decoder configuration record stores information indicating the number of NAL units per NAL unit type.
18. An apparatus of parsing image information, the method comprising:
a parsing unit parsing a decoder configuration record; and
a decoding unit parsing an NAL unit based on the parsed decoder configuration record, wherein the decoder configuration record stores NAL units per NAL unit type.
19. The apparatus of claim 18, wherein the NAL units are stored together with information indicating the type of the NAL units.
20. The apparatus of claim 18, wherein the decoder configuration record stores information indicating the number of NAL units per NAL unit type.
US14/398,559 2012-05-04 2013-05-03 Method for storing image data, method for parsing image data, and an apparatus for using the same Active 2033-11-29 US10097841B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/398,559 US10097841B2 (en) 2012-05-04 2013-05-03 Method for storing image data, method for parsing image data, and an apparatus for using the same

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261642465P 2012-05-04 2012-05-04
US14/398,559 US10097841B2 (en) 2012-05-04 2013-05-03 Method for storing image data, method for parsing image data, and an apparatus for using the same
PCT/KR2013/003869 WO2013165215A1 (en) 2012-05-04 2013-05-03 Method for storing image data, method for parsing image data, and an apparatus for using the same

Publications (2)

Publication Number Publication Date
US20150085917A1 true US20150085917A1 (en) 2015-03-26
US10097841B2 US10097841B2 (en) 2018-10-09

Family

ID=49514553

Family Applications (1)

Application Number Title Priority Date Filing Date
US14/398,559 Active 2033-11-29 US10097841B2 (en) 2012-05-04 2013-05-03 Method for storing image data, method for parsing image data, and an apparatus for using the same

Country Status (2)

Country Link
US (1) US10097841B2 (en)
WO (1) WO2013165215A1 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150195573A1 (en) * 2014-01-07 2015-07-09 Nokia Corporation Apparatus, a method and a computer program for video coding and decoding
US20160156915A1 (en) * 2013-07-18 2016-06-02 Samsung Electronics Co., Ltd. Video encoding method and apparatus and video decoding method and apparatus using video format parameter delivery
US10091536B2 (en) * 2016-03-16 2018-10-02 Vivotek Inc. Method for transmitting an on-demand video file
WO2021138056A1 (en) * 2020-01-01 2021-07-08 Tencent America LLC Method for mixed nal unit type support in a coded picture
CN113302931A (en) * 2018-12-20 2021-08-24 腾讯美国有限责任公司 Identifying tiles from network abstraction unit headers
US11265579B2 (en) * 2018-08-01 2022-03-01 Comcast Cable Communications, Llc Systems, methods, and apparatuses for video processing
RU2782245C1 (en) * 2020-01-01 2022-10-25 Тенсент Америка Ллс Method for supporting network abstraction layer (nal) blocks of mixed types in an encoded image

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9584792B2 (en) 2013-01-04 2017-02-28 Qualcomm Incorporated Indication of current view dependency on reference view in multiview coding file format
CN111835993A (en) * 2020-09-16 2020-10-27 深圳市阿达视高新技术有限公司 Damage-proof video storage method, device, equipment and medium
US20240056618A1 (en) * 2020-12-17 2024-02-15 Lg Electronics Inc. Method and device for generating/receiving media file including nal unit array information, and method for transmitting media file
WO2022164024A1 (en) * 2021-01-26 2022-08-04 엘지전자 주식회사 Media file processing method and device

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030163781A1 (en) * 2002-02-25 2003-08-28 Visharam Mohammed Zubair Method and apparatus for supporting advanced coding formats in media files
US20050265449A1 (en) * 2004-05-29 2005-12-01 Yoon Suk-Hyun Methods, circuits, and computer program products for syntax parsing in H.264 compliant video decoders
US20060059245A1 (en) * 2003-03-25 2006-03-16 Matsushita Electric Industrial Co., Ltd. Data transmission device
US7061410B1 (en) * 2005-07-18 2006-06-13 Lsi Logic Corporation Method and/or apparatus for transcoding between H.264 CABAC and CAVLC entropy coding modes
US20070189732A1 (en) * 2006-02-10 2007-08-16 Sai Pothana System and method for reconstructing MPEG-2 start codes from AVC data
US20090010331A1 (en) * 2006-11-17 2009-01-08 Byeong Moon Jeon Method and Apparatus for Decoding/Encoding a Video Signal
US20090148070A1 (en) * 2007-12-10 2009-06-11 Samsung Electronics Co., Ltd. System and method for generating and reproducing image file including 2d image and 3d stereoscopic image
US20090208119A1 (en) * 2008-02-15 2009-08-20 Samsung Electronics Co., Ltd. Method for generating and playing image files for slideshows
US20100021142A1 (en) * 2006-12-11 2010-01-28 Panasonic Corporation Moving picture decoding device, semiconductor device, video device, and moving picture decoding method
US7725593B2 (en) * 2005-07-15 2010-05-25 Sony Corporation Scalable video coding (SVC) file format
US20100202521A1 (en) * 2006-08-25 2010-08-12 Han Suh Koo Method and apparatus for decoding/encoding a video signal
US20110280314A1 (en) * 2010-05-12 2011-11-17 Texas Instruments Incorporated Slice encoding and decoding processors, circuits, devices, systems and processes
US20130083845A1 (en) * 2011-09-30 2013-04-04 Research In Motion Limited Methods and devices for data compression using a non-uniform reconstruction space
US20130114735A1 (en) * 2011-11-04 2013-05-09 Qualcomm Incorporated Video coding with network abstraction layer units that include multiple encoded picture partitions
US20140072058A1 (en) * 2010-03-05 2014-03-13 Thomson Licensing Coding systems
US20140098868A1 (en) * 2012-10-04 2014-04-10 Qualcomm Incorporated File format for video data
US9143802B2 (en) * 2011-10-31 2015-09-22 Qualcomm Incorporated Fragmented parameter set for video coding

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060068254A (en) * 2004-12-16 2006-06-21 엘지전자 주식회사 Video encoding method, video decoding method, and video decoder
KR100889745B1 (en) 2006-01-09 2009-03-24 한국전자통신연구원 Method defining NAL unit type and system of trasmission bitstream and redundant slice coding
ES2388799T3 (en) * 2007-04-18 2012-10-18 Thomson Licensing Coding systems
US8976871B2 (en) * 2009-09-16 2015-03-10 Qualcomm Incorporated Media extractor tracks for file format track selection
EP2580919A1 (en) 2010-06-14 2013-04-17 Thomson Licensing Method and apparatus for encapsulating coded multi-component video
US10958915B2 (en) * 2012-01-30 2021-03-23 Qualcomm Incorporated Method of coding video and storing video content

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030163781A1 (en) * 2002-02-25 2003-08-28 Visharam Mohammed Zubair Method and apparatus for supporting advanced coding formats in media files
US20060059245A1 (en) * 2003-03-25 2006-03-16 Matsushita Electric Industrial Co., Ltd. Data transmission device
US20050265449A1 (en) * 2004-05-29 2005-12-01 Yoon Suk-Hyun Methods, circuits, and computer program products for syntax parsing in H.264 compliant video decoders
US7725593B2 (en) * 2005-07-15 2010-05-25 Sony Corporation Scalable video coding (SVC) file format
US7061410B1 (en) * 2005-07-18 2006-06-13 Lsi Logic Corporation Method and/or apparatus for transcoding between H.264 CABAC and CAVLC entropy coding modes
US20070189732A1 (en) * 2006-02-10 2007-08-16 Sai Pothana System and method for reconstructing MPEG-2 start codes from AVC data
US20100202521A1 (en) * 2006-08-25 2010-08-12 Han Suh Koo Method and apparatus for decoding/encoding a video signal
US20090010331A1 (en) * 2006-11-17 2009-01-08 Byeong Moon Jeon Method and Apparatus for Decoding/Encoding a Video Signal
US20100021142A1 (en) * 2006-12-11 2010-01-28 Panasonic Corporation Moving picture decoding device, semiconductor device, video device, and moving picture decoding method
US20090148070A1 (en) * 2007-12-10 2009-06-11 Samsung Electronics Co., Ltd. System and method for generating and reproducing image file including 2d image and 3d stereoscopic image
US20090208119A1 (en) * 2008-02-15 2009-08-20 Samsung Electronics Co., Ltd. Method for generating and playing image files for slideshows
US20140072058A1 (en) * 2010-03-05 2014-03-13 Thomson Licensing Coding systems
US20110280314A1 (en) * 2010-05-12 2011-11-17 Texas Instruments Incorporated Slice encoding and decoding processors, circuits, devices, systems and processes
US20130083845A1 (en) * 2011-09-30 2013-04-04 Research In Motion Limited Methods and devices for data compression using a non-uniform reconstruction space
US9143802B2 (en) * 2011-10-31 2015-09-22 Qualcomm Incorporated Fragmented parameter set for video coding
US20130114735A1 (en) * 2011-11-04 2013-05-09 Qualcomm Incorporated Video coding with network abstraction layer units that include multiple encoded picture partitions
US20140098868A1 (en) * 2012-10-04 2014-04-10 Qualcomm Incorporated File format for video data

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160156915A1 (en) * 2013-07-18 2016-06-02 Samsung Electronics Co., Ltd. Video encoding method and apparatus and video decoding method and apparatus using video format parameter delivery
US20150195573A1 (en) * 2014-01-07 2015-07-09 Nokia Corporation Apparatus, a method and a computer program for video coding and decoding
US10368097B2 (en) * 2014-01-07 2019-07-30 Nokia Technologies Oy Apparatus, a method and a computer program product for coding and decoding chroma components of texture pictures for sample prediction of depth pictures
US10091536B2 (en) * 2016-03-16 2018-10-02 Vivotek Inc. Method for transmitting an on-demand video file
US11265579B2 (en) * 2018-08-01 2022-03-01 Comcast Cable Communications, Llc Systems, methods, and apparatuses for video processing
US20220295103A1 (en) * 2018-08-01 2022-09-15 Comcast Cable Communications, Llc Systems, methods, and apparatuses for video processing
US11736730B2 (en) * 2018-08-01 2023-08-22 Comcast Cable Communications, Llc Systems, methods, and apparatuses for video processing
CN113302931A (en) * 2018-12-20 2021-08-24 腾讯美国有限责任公司 Identifying tiles from network abstraction unit headers
WO2021138056A1 (en) * 2020-01-01 2021-07-08 Tencent America LLC Method for mixed nal unit type support in a coded picture
US11399188B2 (en) 2020-01-01 2022-07-26 Tencent America LLC Method for mixed NAL unit type support in a coded picture
RU2782245C1 (en) * 2020-01-01 2022-10-25 Тенсент Америка Ллс Method for supporting network abstraction layer (nal) blocks of mixed types in an encoded image
US11956442B2 (en) 2020-01-01 2024-04-09 Tencent America LLC Method for mixed NAL unit type support in a coded picture

Also Published As

Publication number Publication date
WO2013165215A1 (en) 2013-11-07
US10097841B2 (en) 2018-10-09

Similar Documents

Publication Publication Date Title
US10097841B2 (en) Method for storing image data, method for parsing image data, and an apparatus for using the same
US11546622B2 (en) Image decoding method and apparatus using same
US10313696B2 (en) Method for storing image information, method for parsing image information and apparatus using same
CA2724872C (en) Image signal decoding apparatus, image signal decoding method, image signal encoding apparatus, image signal encoding method, and program
US10257519B2 (en) Signaling and derivation of decoded picture buffer parameters
WO2015136941A1 (en) Constrained reference picture parameters
US10944994B2 (en) Indicating bit stream subsets
US9992498B2 (en) Method and device for generating parameter set for image encoding/decoding
US20230269384A1 (en) Roll sample group in vvc video coding
EP4266689A1 (en) Method and device for generating/receiving media file including nal unit information, and method for transmitting media file
CN116601963A (en) Method and apparatus for generating/receiving media file including NAL unit array information and method for transmitting the media file
CN116235502A (en) Method and apparatus for generating/receiving media file including output layer set information and method for transmitting the media file
CN116325766A (en) Method and apparatus for generating/receiving media file containing layer information and media file transfer method

Legal Events

Date Code Title Description
AS Assignment

Owner name: LG ELECTRONICS INC., KOREA, REPUBLIC OF

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HENDRY, HENDRY;KIM, JUNGSUN;JEON, BYEONGMOON;AND OTHERS;SIGNING DATES FROM 20141130 TO 20150106;REEL/FRAME:034655/0001

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4