mirror of https://bitbucket.org/ausocean/av.git
codec/h264/h264dec: commenting for NAL uni syntax structure fields
This commit is contained in:
parent
865c1676da
commit
6779fa3cb6
|
@ -19,13 +19,29 @@ import (
|
|||
|
||||
// MVCExtension describes a NAL unit header multiview video coding extension, as
|
||||
// defined in section H.7.3.1.1 of the specifications.
|
||||
// Semantics of fields are specified in section H.7.4.1.1.
|
||||
type MVCExtension struct {
|
||||
NonIdrFlag bool
|
||||
PriorityID int
|
||||
ViewID int
|
||||
TemporalID int
|
||||
AnchorPicFlag bool
|
||||
InterViewFlag bool
|
||||
// non_idr_flag, if true indicates that access unit is not IDR.
|
||||
NonIdrFlag bool
|
||||
|
||||
// priority_id, indicates priority of NAL unit. A lower value => higher priority.
|
||||
PriorityID int
|
||||
|
||||
// view_id, specifies a view identifier for the unit. Units with identical
|
||||
// view_id are in the same view.
|
||||
ViewID int
|
||||
|
||||
// temporal_id, temporal identifier for the unit.
|
||||
TemporalID int
|
||||
|
||||
// anchor_pic_flag, if true access unit is an anchor access unit.
|
||||
AnchorPicFlag bool
|
||||
|
||||
// inter_view_flag, if false current view component not used for inter-view
|
||||
// prediction elsewhere in access unit.
|
||||
InterViewFlag bool
|
||||
|
||||
// reserved_one_bit, always 1 (ignored by decoders)
|
||||
ReservedOneBit int
|
||||
}
|
||||
|
||||
|
@ -76,12 +92,26 @@ func NewMVCExtension(br *bits.BitReader) (*MVCExtension, error) {
|
|||
|
||||
// ThreeDAVCExtension describes a NAL unit header 3D advanced video coding
|
||||
// extension, as defined in section J.7.3.1.1 of the specifications.
|
||||
// For field semantics see section J.7.4.1.1.
|
||||
type ThreeDAVCExtension struct {
|
||||
ViewIdx int
|
||||
DepthFlag bool
|
||||
NonIdrFlag bool
|
||||
TemporalID int
|
||||
// view_idx, specifies the order index for the NAL i.e. view_id = view_id[view_idx].
|
||||
ViewIdx int
|
||||
|
||||
// dpeth_flag, if true indicates NAL part of a depth view component, otherwise
|
||||
// a texture view component.
|
||||
DepthFlag bool
|
||||
|
||||
// non_idr_flag, if true indicates that access unit is not IDR.
|
||||
NonIdrFlag bool
|
||||
|
||||
// temporal_id, temporal identifier for the unit.
|
||||
TemporalID int
|
||||
|
||||
// anchor_pic_flag, if true access unit is an anchor access unit.
|
||||
AnchorPicFlag bool
|
||||
|
||||
// inter_view_flag, if false current view component not used for inter-view
|
||||
// prediction elsewhere in access unit.
|
||||
InterViewFlag bool
|
||||
}
|
||||
|
||||
|
@ -127,17 +157,44 @@ func NewThreeDAVCExtension(br *bits.BitReader) (*ThreeDAVCExtension, error) {
|
|||
|
||||
// SVCExtension describes a NAL unit header scalable video coding extension, as
|
||||
// defined in section G.7.3.1.1 of the specifications.
|
||||
// For field semantics see section G.7.4.1.1.
|
||||
type SVCExtension struct {
|
||||
IdrFlag bool
|
||||
PriorityID int
|
||||
// idr_flag, if true the current coded picture is an IDR picture when
|
||||
// dependency_id == max(dependency_id) in the coded picture.
|
||||
IdrFlag bool
|
||||
|
||||
// priority_id, specifies priority identifier for unit.
|
||||
PriorityID int
|
||||
|
||||
// no_inter_layer_pred_flag, if true inter-layer prediction can't be used for
|
||||
// decoding slice.
|
||||
NoInterLayerPredFlag bool
|
||||
DependencyID int
|
||||
QualityID int
|
||||
TemporalID int
|
||||
UseRefBasePicFlag bool
|
||||
DiscardableFlag bool
|
||||
OutputFlag bool
|
||||
ReservedThree2Bits int
|
||||
|
||||
// dependency_id, specifies a dependency identifier for the NAL.
|
||||
DependencyID int
|
||||
|
||||
// quality_id, specifies a quality identifier for the NAL.
|
||||
QualityID int
|
||||
|
||||
// temporal_id, specifiesa temporal identifier for the NAL.
|
||||
TemporalID int
|
||||
|
||||
// use_ref_base_pic_flag, if true indicates reference base pictures and
|
||||
// decoded pictures are used as references for inter prediction.
|
||||
UseRefBasePicFlag bool
|
||||
|
||||
// discardable_flag, if true, indicates current NAL is not used for decoding
|
||||
// dependency representations that are part of the current coded picture or
|
||||
// any subsequent coded picture in decoding order and have a greater
|
||||
// dependency_id value than current NAL.
|
||||
DiscardableFlag bool
|
||||
|
||||
// output_flag, affects the decoded picture output and removal processes as
|
||||
// specified in Annex C.
|
||||
OutputFlag bool
|
||||
|
||||
// reserved_three_2bits, equal to 3. Decoders ignore.
|
||||
ReservedThree2Bits int
|
||||
}
|
||||
|
||||
// NewSVCExtension parses a NAL unit header scalable video coding extension from
|
||||
|
@ -202,17 +259,47 @@ func NewSVCExtension(br *bits.BitReader) (*SVCExtension, error) {
|
|||
|
||||
// NALUnit describes a network abstraction layer unit, as defined in section
|
||||
// 7.3.1 of the specifications.
|
||||
// Field semantics are defined in section 7.4.1.
|
||||
type NALUnit struct {
|
||||
ForbiddenZeroBit int
|
||||
RefIdc int
|
||||
Type int
|
||||
SVCExtensionFlag bool
|
||||
AVC3DExtensionFlag bool
|
||||
SVCExtension *SVCExtension
|
||||
ThreeDAVCExtension *ThreeDAVCExtension
|
||||
MVCExtension *MVCExtension
|
||||
// forbidden_zero_bit, always 0.
|
||||
ForbiddenZeroBit int
|
||||
|
||||
// nal_ref_idc, if not 0 indicates content of NAL contains a sequence parameter
|
||||
// set, a sequence parameter set extension, a subset sequence parameter set,
|
||||
// a picture parameter set, a slice of a reference picture, a slice data
|
||||
// partition of a reference picture, or a prefix NAL preceding a slice of
|
||||
// a reference picture.
|
||||
RefIdc int
|
||||
|
||||
// nal_unit_type, specifies the type of RBSP data contained in the NAL as
|
||||
// defined in Table 7-1.
|
||||
Type int
|
||||
|
||||
// svc_extension_flag, indicates whether a nal_unit_header_svc_extension()
|
||||
// (G.7.3.1.1) or nal_unit_header_mvc_extension() (H.7.3.1.1) will follow next
|
||||
// in the syntax structure.
|
||||
SVCExtensionFlag bool
|
||||
|
||||
// avc_3d_extension_flag, for nal_unit_type = 21, indicates that a
|
||||
// nal_unit_header_mvc_extension() (H.7.3.1.1) or
|
||||
// nal_unit_header_3davc_extension() (J.7.3.1.1) will follow next in syntax
|
||||
// structure.
|
||||
AVC3DExtensionFlag bool
|
||||
|
||||
// nal_unit_header_svc_extension() as defined in section G.7.3.1.1.
|
||||
SVCExtension *SVCExtension
|
||||
|
||||
// nal_unit_header_3davc_extension() as defined in section J.7.3.1.1
|
||||
ThreeDAVCExtension *ThreeDAVCExtension
|
||||
|
||||
// nal_unit_header_mvc_extension() as defined in section H.7.3.1.1).
|
||||
MVCExtension *MVCExtension
|
||||
|
||||
// emulation_prevention_three_byte, equal to 0x03 and is discarded by decoder.
|
||||
EmulationPreventionThreeByte byte
|
||||
RBSP []byte
|
||||
|
||||
// rbsp_byte, the raw byte sequence payload data for the NAL.
|
||||
RBSP []byte
|
||||
}
|
||||
|
||||
// NewNALUnit parses a network abstraction layer unit from br following the
|
||||
|
|
Loading…
Reference in New Issue