.mov file format of QuickTime, MP4 ISO 14496-14 media: Go parsing library

Application

QuickTime, MP4 ISO 14496-14 media

File extension

mov

KS implementation details

License: CC0-1.0

References

This page hosts a formal specification of .mov file format of QuickTime, MP4 ISO 14496-14 media using Kaitai Struct. This specification can be automatically translated into a variety of programming languages to get a parsing library.

Go source code to parse .mov file format of QuickTime, MP4 ISO 14496-14 media

quicktime_mov.go

// Code generated by kaitai-struct-compiler from a .ksy source file. DO NOT EDIT.

import (
	"github.com/kaitai-io/kaitai_struct_go_runtime/kaitai"
	"bytes"
)


/**
 * @see <a href="https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap1/qtff1.html#//apple_ref/doc/uid/TP40000939-CH203-BBCGDDDF">Source</a>
 */

type QuicktimeMov_AtomType int
const (
	QuicktimeMov_AtomType__Xtra QuicktimeMov_AtomType = 1484026465
	QuicktimeMov_AtomType__Dinf QuicktimeMov_AtomType = 1684631142
	QuicktimeMov_AtomType__Dref QuicktimeMov_AtomType = 1685218662
	QuicktimeMov_AtomType__Edts QuicktimeMov_AtomType = 1701082227
	QuicktimeMov_AtomType__Elst QuicktimeMov_AtomType = 1701606260
	QuicktimeMov_AtomType__Free QuicktimeMov_AtomType = 1718773093
	QuicktimeMov_AtomType__Ftyp QuicktimeMov_AtomType = 1718909296
	QuicktimeMov_AtomType__Hdlr QuicktimeMov_AtomType = 1751411826
	QuicktimeMov_AtomType__Iods QuicktimeMov_AtomType = 1768907891
	QuicktimeMov_AtomType__Mdat QuicktimeMov_AtomType = 1835295092
	QuicktimeMov_AtomType__Mdhd QuicktimeMov_AtomType = 1835296868
	QuicktimeMov_AtomType__Mdia QuicktimeMov_AtomType = 1835297121
	QuicktimeMov_AtomType__Meta QuicktimeMov_AtomType = 1835365473
	QuicktimeMov_AtomType__Minf QuicktimeMov_AtomType = 1835626086
	QuicktimeMov_AtomType__Moof QuicktimeMov_AtomType = 1836019558
	QuicktimeMov_AtomType__Moov QuicktimeMov_AtomType = 1836019574
	QuicktimeMov_AtomType__Mvhd QuicktimeMov_AtomType = 1836476516
	QuicktimeMov_AtomType__Smhd QuicktimeMov_AtomType = 1936549988
	QuicktimeMov_AtomType__Stbl QuicktimeMov_AtomType = 1937007212
	QuicktimeMov_AtomType__Stco QuicktimeMov_AtomType = 1937007471
	QuicktimeMov_AtomType__Stsc QuicktimeMov_AtomType = 1937011555
	QuicktimeMov_AtomType__Stsd QuicktimeMov_AtomType = 1937011556
	QuicktimeMov_AtomType__Stsz QuicktimeMov_AtomType = 1937011578
	QuicktimeMov_AtomType__Stts QuicktimeMov_AtomType = 1937011827
	QuicktimeMov_AtomType__Tkhd QuicktimeMov_AtomType = 1953196132
	QuicktimeMov_AtomType__Traf QuicktimeMov_AtomType = 1953653094
	QuicktimeMov_AtomType__Trak QuicktimeMov_AtomType = 1953653099
	QuicktimeMov_AtomType__Tref QuicktimeMov_AtomType = 1953654118
	QuicktimeMov_AtomType__Udta QuicktimeMov_AtomType = 1969517665
	QuicktimeMov_AtomType__Vmhd QuicktimeMov_AtomType = 1986881636
)
var values_QuicktimeMov_AtomType = map[QuicktimeMov_AtomType]struct{}{1484026465: {}, 1684631142: {}, 1685218662: {}, 1701082227: {}, 1701606260: {}, 1718773093: {}, 1718909296: {}, 1751411826: {}, 1768907891: {}, 1835295092: {}, 1835296868: {}, 1835297121: {}, 1835365473: {}, 1835626086: {}, 1836019558: {}, 1836019574: {}, 1836476516: {}, 1936549988: {}, 1937007212: {}, 1937007471: {}, 1937011555: {}, 1937011556: {}, 1937011578: {}, 1937011827: {}, 1953196132: {}, 1953653094: {}, 1953653099: {}, 1953654118: {}, 1969517665: {}, 1986881636: {}}
func (v QuicktimeMov_AtomType) isDefined() bool {
	_, ok := values_QuicktimeMov_AtomType[v]
	return ok
}

type QuicktimeMov_Brand int
const (
	QuicktimeMov_Brand__X3g2a QuicktimeMov_Brand = 862401121
	QuicktimeMov_Brand__X3ge6 QuicktimeMov_Brand = 862414134
	QuicktimeMov_Brand__X3ge7 QuicktimeMov_Brand = 862414135
	QuicktimeMov_Brand__X3ge9 QuicktimeMov_Brand = 862414137
	QuicktimeMov_Brand__X3gf9 QuicktimeMov_Brand = 862414393
	QuicktimeMov_Brand__X3gg6 QuicktimeMov_Brand = 862414646
	QuicktimeMov_Brand__X3gg9 QuicktimeMov_Brand = 862414649
	QuicktimeMov_Brand__X3gh9 QuicktimeMov_Brand = 862414905
	QuicktimeMov_Brand__X3gm9 QuicktimeMov_Brand = 862416185
	QuicktimeMov_Brand__X3gma QuicktimeMov_Brand = 862416193
	QuicktimeMov_Brand__X3gp4 QuicktimeMov_Brand = 862416948
	QuicktimeMov_Brand__X3gp5 QuicktimeMov_Brand = 862416949
	QuicktimeMov_Brand__X3gp6 QuicktimeMov_Brand = 862416950
	QuicktimeMov_Brand__X3gp7 QuicktimeMov_Brand = 862416951
	QuicktimeMov_Brand__X3gp8 QuicktimeMov_Brand = 862416952
	QuicktimeMov_Brand__X3gp9 QuicktimeMov_Brand = 862416953
	QuicktimeMov_Brand__X3gr6 QuicktimeMov_Brand = 862417462
	QuicktimeMov_Brand__X3gr9 QuicktimeMov_Brand = 862417465
	QuicktimeMov_Brand__X3gs6 QuicktimeMov_Brand = 862417718
	QuicktimeMov_Brand__X3gs9 QuicktimeMov_Brand = 862417721
	QuicktimeMov_Brand__X3gt8 QuicktimeMov_Brand = 862417976
	QuicktimeMov_Brand__X3gt9 QuicktimeMov_Brand = 862417977
	QuicktimeMov_Brand__X3gtv QuicktimeMov_Brand = 862418038
	QuicktimeMov_Brand__X3gvr QuicktimeMov_Brand = 862418546
	QuicktimeMov_Brand__X3vra QuicktimeMov_Brand = 863400545
	QuicktimeMov_Brand__X3vrb QuicktimeMov_Brand = 863400546
	QuicktimeMov_Brand__X3vrm QuicktimeMov_Brand = 863400557
	QuicktimeMov_Brand__Arri QuicktimeMov_Brand = 1095914057
	QuicktimeMov_Brand__Caep QuicktimeMov_Brand = 1128351056
	QuicktimeMov_Brand__Cdes QuicktimeMov_Brand = 1128555891
	QuicktimeMov_Brand__J2p0 QuicktimeMov_Brand = 1244811312
	QuicktimeMov_Brand__J2p1 QuicktimeMov_Brand = 1244811313
	QuicktimeMov_Brand__Lcag QuicktimeMov_Brand = 1279476039
	QuicktimeMov_Brand__M4a QuicktimeMov_Brand = 1295270176
	QuicktimeMov_Brand__M4b QuicktimeMov_Brand = 1295270432
	QuicktimeMov_Brand__M4p QuicktimeMov_Brand = 1295274016
	QuicktimeMov_Brand__M4v QuicktimeMov_Brand = 1295275552
	QuicktimeMov_Brand__Ma1a QuicktimeMov_Brand = 1296118081
	QuicktimeMov_Brand__Ma1b QuicktimeMov_Brand = 1296118082
	QuicktimeMov_Brand__Mfsm QuicktimeMov_Brand = 1296454477
	QuicktimeMov_Brand__Mgsv QuicktimeMov_Brand = 1296520022
	QuicktimeMov_Brand__Mppi QuicktimeMov_Brand = 1297109065
	QuicktimeMov_Brand__Msnv QuicktimeMov_Brand = 1297305174
	QuicktimeMov_Brand__Miab QuicktimeMov_Brand = 1298743618
	QuicktimeMov_Brand__Miac QuicktimeMov_Brand = 1298743619
	QuicktimeMov_Brand__Mian QuicktimeMov_Brand = 1298743662
	QuicktimeMov_Brand__Mibu QuicktimeMov_Brand = 1298743925
	QuicktimeMov_Brand__Micm QuicktimeMov_Brand = 1298744173
	QuicktimeMov_Brand__Miha QuicktimeMov_Brand = 1298745409
	QuicktimeMov_Brand__Mihb QuicktimeMov_Brand = 1298745410
	QuicktimeMov_Brand__Mihe QuicktimeMov_Brand = 1298745413
	QuicktimeMov_Brand__Mipr QuicktimeMov_Brand = 1298747506
	QuicktimeMov_Brand__Ross QuicktimeMov_Brand = 1380930387
	QuicktimeMov_Brand__Seau QuicktimeMov_Brand = 1397047637
	QuicktimeMov_Brand__Sebk QuicktimeMov_Brand = 1397047883
	QuicktimeMov_Brand__Xavc QuicktimeMov_Brand = 1480676931
	QuicktimeMov_Brand__Adti QuicktimeMov_Brand = 1633973353
	QuicktimeMov_Brand__Aid3 QuicktimeMov_Brand = 1634296883
	QuicktimeMov_Brand__Av01 QuicktimeMov_Brand = 1635135537
	QuicktimeMov_Brand__Avc1 QuicktimeMov_Brand = 1635148593
	QuicktimeMov_Brand__Avci QuicktimeMov_Brand = 1635148649
	QuicktimeMov_Brand__Avcs QuicktimeMov_Brand = 1635148659
	QuicktimeMov_Brand__Avde QuicktimeMov_Brand = 1635148901
	QuicktimeMov_Brand__Avif QuicktimeMov_Brand = 1635150182
	QuicktimeMov_Brand__Avio QuicktimeMov_Brand = 1635150191
	QuicktimeMov_Brand__Avis QuicktimeMov_Brand = 1635150195
	QuicktimeMov_Brand__Bbxm QuicktimeMov_Brand = 1650620525
	QuicktimeMov_Brand__Ca4m QuicktimeMov_Brand = 1667314797
	QuicktimeMov_Brand__Ca4s QuicktimeMov_Brand = 1667314803
	QuicktimeMov_Brand__Caaa QuicktimeMov_Brand = 1667326305
	QuicktimeMov_Brand__Caac QuicktimeMov_Brand = 1667326307
	QuicktimeMov_Brand__Cabl QuicktimeMov_Brand = 1667326572
	QuicktimeMov_Brand__Cama QuicktimeMov_Brand = 1667329377
	QuicktimeMov_Brand__Camc QuicktimeMov_Brand = 1667329379
	QuicktimeMov_Brand__Caqv QuicktimeMov_Brand = 1667330422
	QuicktimeMov_Brand__Casu QuicktimeMov_Brand = 1667330933
	QuicktimeMov_Brand__Ccea QuicktimeMov_Brand = 1667458401
	QuicktimeMov_Brand__Ccff QuicktimeMov_Brand = 1667458662
	QuicktimeMov_Brand__Cdm1 QuicktimeMov_Brand = 1667525937
	QuicktimeMov_Brand__Cdm4 QuicktimeMov_Brand = 1667525940
	QuicktimeMov_Brand__Ceac QuicktimeMov_Brand = 1667588451
	QuicktimeMov_Brand__Cfhd QuicktimeMov_Brand = 1667655780
	QuicktimeMov_Brand__Cfsd QuicktimeMov_Brand = 1667658596
	QuicktimeMov_Brand__Chd1 QuicktimeMov_Brand = 1667785777
	QuicktimeMov_Brand__Chd2 QuicktimeMov_Brand = 1667785778
	QuicktimeMov_Brand__Chdf QuicktimeMov_Brand = 1667785830
	QuicktimeMov_Brand__Chev QuicktimeMov_Brand = 1667786102
	QuicktimeMov_Brand__Chh1 QuicktimeMov_Brand = 1667786801
	QuicktimeMov_Brand__Chhd QuicktimeMov_Brand = 1667786852
	QuicktimeMov_Brand__Cint QuicktimeMov_Brand = 1667853940
	QuicktimeMov_Brand__Clg1 QuicktimeMov_Brand = 1668048689
	QuicktimeMov_Brand__Clg2 QuicktimeMov_Brand = 1668048690
	QuicktimeMov_Brand__Cmf2 QuicktimeMov_Brand = 1668113970
	QuicktimeMov_Brand__Cmfc QuicktimeMov_Brand = 1668114019
	QuicktimeMov_Brand__Cmff QuicktimeMov_Brand = 1668114022
	QuicktimeMov_Brand__Cmfl QuicktimeMov_Brand = 1668114028
	QuicktimeMov_Brand__Cmfs QuicktimeMov_Brand = 1668114035
	QuicktimeMov_Brand__Cmhm QuicktimeMov_Brand = 1668114541
	QuicktimeMov_Brand__Cmhs QuicktimeMov_Brand = 1668114547
	QuicktimeMov_Brand__Comp QuicktimeMov_Brand = 1668246896
	QuicktimeMov_Brand__Csh1 QuicktimeMov_Brand = 1668507697
	QuicktimeMov_Brand__Cud1 QuicktimeMov_Brand = 1668637745
	QuicktimeMov_Brand__Cud2 QuicktimeMov_Brand = 1668637746
	QuicktimeMov_Brand__Cud8 QuicktimeMov_Brand = 1668637752
	QuicktimeMov_Brand__Cud9 QuicktimeMov_Brand = 1668637753
	QuicktimeMov_Brand__Cuvd QuicktimeMov_Brand = 1668642404
	QuicktimeMov_Brand__Cvid QuicktimeMov_Brand = 1668704612
	QuicktimeMov_Brand__Cvvc QuicktimeMov_Brand = 1668707939
	QuicktimeMov_Brand__Cwvt QuicktimeMov_Brand = 1668773492
	QuicktimeMov_Brand__Da0a QuicktimeMov_Brand = 1684090977
	QuicktimeMov_Brand__Da0b QuicktimeMov_Brand = 1684090978
	QuicktimeMov_Brand__Da1a QuicktimeMov_Brand = 1684091233
	QuicktimeMov_Brand__Da1b QuicktimeMov_Brand = 1684091234
	QuicktimeMov_Brand__Da2a QuicktimeMov_Brand = 1684091489
	QuicktimeMov_Brand__Da2b QuicktimeMov_Brand = 1684091490
	QuicktimeMov_Brand__Da3a QuicktimeMov_Brand = 1684091745
	QuicktimeMov_Brand__Da3b QuicktimeMov_Brand = 1684091746
	QuicktimeMov_Brand__Dash QuicktimeMov_Brand = 1684108136
	QuicktimeMov_Brand__Dby1 QuicktimeMov_Brand = 1684175153
	QuicktimeMov_Brand__Dmb1 QuicktimeMov_Brand = 1684890161
	QuicktimeMov_Brand__Dsms QuicktimeMov_Brand = 1685286259
	QuicktimeMov_Brand__Dts1 QuicktimeMov_Brand = 1685353265
	QuicktimeMov_Brand__Dts2 QuicktimeMov_Brand = 1685353266
	QuicktimeMov_Brand__Dts3 QuicktimeMov_Brand = 1685353267
	QuicktimeMov_Brand__Dv1a QuicktimeMov_Brand = 1685467489
	QuicktimeMov_Brand__Dv1b QuicktimeMov_Brand = 1685467490
	QuicktimeMov_Brand__Dv2a QuicktimeMov_Brand = 1685467745
	QuicktimeMov_Brand__Dv2b QuicktimeMov_Brand = 1685467746
	QuicktimeMov_Brand__Dv3a QuicktimeMov_Brand = 1685468001
	QuicktimeMov_Brand__Dv3b QuicktimeMov_Brand = 1685468002
	QuicktimeMov_Brand__Dvr1 QuicktimeMov_Brand = 1685484081
	QuicktimeMov_Brand__Dvt1 QuicktimeMov_Brand = 1685484593
	QuicktimeMov_Brand__Dxo QuicktimeMov_Brand = 1685614368
	QuicktimeMov_Brand__Emsg QuicktimeMov_Brand = 1701671783
	QuicktimeMov_Brand__Heic QuicktimeMov_Brand = 1751476579
	QuicktimeMov_Brand__Heim QuicktimeMov_Brand = 1751476589
	QuicktimeMov_Brand__Heis QuicktimeMov_Brand = 1751476595
	QuicktimeMov_Brand__Heix QuicktimeMov_Brand = 1751476600
	QuicktimeMov_Brand__Heoi QuicktimeMov_Brand = 1751478121
	QuicktimeMov_Brand__Hevc QuicktimeMov_Brand = 1751479907
	QuicktimeMov_Brand__Hevd QuicktimeMov_Brand = 1751479908
	QuicktimeMov_Brand__Hevi QuicktimeMov_Brand = 1751479913
	QuicktimeMov_Brand__Hevm QuicktimeMov_Brand = 1751479917
	QuicktimeMov_Brand__Hevs QuicktimeMov_Brand = 1751479923
	QuicktimeMov_Brand__Hevx QuicktimeMov_Brand = 1751479928
	QuicktimeMov_Brand__Hvce QuicktimeMov_Brand = 1752589157
	QuicktimeMov_Brand__Hvci QuicktimeMov_Brand = 1752589161
	QuicktimeMov_Brand__Hvcx QuicktimeMov_Brand = 1752589176
	QuicktimeMov_Brand__Hvti QuicktimeMov_Brand = 1752593513
	QuicktimeMov_Brand__Ifaa QuicktimeMov_Brand = 1768317281
	QuicktimeMov_Brand__Ifah QuicktimeMov_Brand = 1768317288
	QuicktimeMov_Brand__Ifai QuicktimeMov_Brand = 1768317289
	QuicktimeMov_Brand__Ifas QuicktimeMov_Brand = 1768317299
	QuicktimeMov_Brand__Ifau QuicktimeMov_Brand = 1768317301
	QuicktimeMov_Brand__Ifav QuicktimeMov_Brand = 1768317302
	QuicktimeMov_Brand__Ifhd QuicktimeMov_Brand = 1768319076
	QuicktimeMov_Brand__Ifhh QuicktimeMov_Brand = 1768319080
	QuicktimeMov_Brand__Ifhr QuicktimeMov_Brand = 1768319090
	QuicktimeMov_Brand__Ifhs QuicktimeMov_Brand = 1768319091
	QuicktimeMov_Brand__Ifhu QuicktimeMov_Brand = 1768319093
	QuicktimeMov_Brand__Ifhx QuicktimeMov_Brand = 1768319096
	QuicktimeMov_Brand__Ifrm QuicktimeMov_Brand = 1768321645
	QuicktimeMov_Brand__Ifsd QuicktimeMov_Brand = 1768321892
	QuicktimeMov_Brand__Im1i QuicktimeMov_Brand = 1768763753
	QuicktimeMov_Brand__Im1t QuicktimeMov_Brand = 1768763764
	QuicktimeMov_Brand__Im2i QuicktimeMov_Brand = 1768764009
	QuicktimeMov_Brand__Im2t QuicktimeMov_Brand = 1768764020
	QuicktimeMov_Brand__Isc2 QuicktimeMov_Brand = 1769169714
	QuicktimeMov_Brand__Iso2 QuicktimeMov_Brand = 1769172786
	QuicktimeMov_Brand__Iso3 QuicktimeMov_Brand = 1769172787
	QuicktimeMov_Brand__Iso4 QuicktimeMov_Brand = 1769172788
	QuicktimeMov_Brand__Iso5 QuicktimeMov_Brand = 1769172789
	QuicktimeMov_Brand__Iso6 QuicktimeMov_Brand = 1769172790
	QuicktimeMov_Brand__Iso7 QuicktimeMov_Brand = 1769172791
	QuicktimeMov_Brand__Iso8 QuicktimeMov_Brand = 1769172792
	QuicktimeMov_Brand__Iso9 QuicktimeMov_Brand = 1769172793
	QuicktimeMov_Brand__Isoa QuicktimeMov_Brand = 1769172833
	QuicktimeMov_Brand__Isob QuicktimeMov_Brand = 1769172834
	QuicktimeMov_Brand__Isoc QuicktimeMov_Brand = 1769172835
	QuicktimeMov_Brand__Isom QuicktimeMov_Brand = 1769172845
	QuicktimeMov_Brand__J2is QuicktimeMov_Brand = 1781688691
	QuicktimeMov_Brand__J2ki QuicktimeMov_Brand = 1781689193
	QuicktimeMov_Brand__J2ks QuicktimeMov_Brand = 1781689203
	QuicktimeMov_Brand__Jp2 QuicktimeMov_Brand = 1785737760
	QuicktimeMov_Brand__Jpeg QuicktimeMov_Brand = 1785750887
	QuicktimeMov_Brand__Jpgs QuicktimeMov_Brand = 1785751411
	QuicktimeMov_Brand__Jpm QuicktimeMov_Brand = 1785752864
	QuicktimeMov_Brand__Jpoi QuicktimeMov_Brand = 1785753449
	QuicktimeMov_Brand__Jpsi QuicktimeMov_Brand = 1785754473
	QuicktimeMov_Brand__Jpx QuicktimeMov_Brand = 1785755680
	QuicktimeMov_Brand__Jpxb QuicktimeMov_Brand = 1785755746
	QuicktimeMov_Brand__Jxl QuicktimeMov_Brand = 1786276896
	QuicktimeMov_Brand__Jxs QuicktimeMov_Brand = 1786278688
	QuicktimeMov_Brand__Jxsc QuicktimeMov_Brand = 1786278755
	QuicktimeMov_Brand__Jxsi QuicktimeMov_Brand = 1786278761
	QuicktimeMov_Brand__Jxss QuicktimeMov_Brand = 1786278771
	QuicktimeMov_Brand__Lhte QuicktimeMov_Brand = 1818784869
	QuicktimeMov_Brand__Lhti QuicktimeMov_Brand = 1818784873
	QuicktimeMov_Brand__Lmsg QuicktimeMov_Brand = 1819112295
	QuicktimeMov_Brand__Miaf QuicktimeMov_Brand = 1835622758
	QuicktimeMov_Brand__Mif1 QuicktimeMov_Brand = 1835623985
	QuicktimeMov_Brand__Mif2 QuicktimeMov_Brand = 1835623986
	QuicktimeMov_Brand__Mj2s QuicktimeMov_Brand = 1835676275
	QuicktimeMov_Brand__Mjp2 QuicktimeMov_Brand = 1835692082
	QuicktimeMov_Brand__Mp21 QuicktimeMov_Brand = 1836069425
	QuicktimeMov_Brand__Mp41 QuicktimeMov_Brand = 1836069937
	QuicktimeMov_Brand__Mp42 QuicktimeMov_Brand = 1836069938
	QuicktimeMov_Brand__Mp71 QuicktimeMov_Brand = 1836070705
	QuicktimeMov_Brand__Mpuf QuicktimeMov_Brand = 1836086630
	QuicktimeMov_Brand__Msdh QuicktimeMov_Brand = 1836278888
	QuicktimeMov_Brand__Msf1 QuicktimeMov_Brand = 1836279345
	QuicktimeMov_Brand__Msix QuicktimeMov_Brand = 1836280184
	QuicktimeMov_Brand__Niko QuicktimeMov_Brand = 1852402543
	QuicktimeMov_Brand__Nlsl QuicktimeMov_Brand = 1852601196
	QuicktimeMov_Brand__Nras QuicktimeMov_Brand = 1852989811
	QuicktimeMov_Brand__Oa2d QuicktimeMov_Brand = 1868640868
	QuicktimeMov_Brand__Oabl QuicktimeMov_Brand = 1868653164
	QuicktimeMov_Brand__Odcf QuicktimeMov_Brand = 1868850022
	QuicktimeMov_Brand__Ompp QuicktimeMov_Brand = 1869443184
	QuicktimeMov_Brand__Opf2 QuicktimeMov_Brand = 1869637170
	QuicktimeMov_Brand__Opx2 QuicktimeMov_Brand = 1869641778
	QuicktimeMov_Brand__Ovdp QuicktimeMov_Brand = 1870029936
	QuicktimeMov_Brand__Ovly QuicktimeMov_Brand = 1870031993
	QuicktimeMov_Brand__Paff QuicktimeMov_Brand = 1885431398
	QuicktimeMov_Brand__Pana QuicktimeMov_Brand = 1885433441
	QuicktimeMov_Brand__Piff QuicktimeMov_Brand = 1885955686
	QuicktimeMov_Brand__Pmff QuicktimeMov_Brand = 1886217830
	QuicktimeMov_Brand__Pnvi QuicktimeMov_Brand = 1886287465
	QuicktimeMov_Brand__Pred QuicktimeMov_Brand = 1886545252
	QuicktimeMov_Brand__Qt QuicktimeMov_Brand = 1903435808
	QuicktimeMov_Brand__Relo QuicktimeMov_Brand = 1919249519
	QuicktimeMov_Brand__Risx QuicktimeMov_Brand = 1919513464
	QuicktimeMov_Brand__Sdv QuicktimeMov_Brand = 1935963680
	QuicktimeMov_Brand__Senv QuicktimeMov_Brand = 1936027254
	QuicktimeMov_Brand__Sims QuicktimeMov_Brand = 1936289139
	QuicktimeMov_Brand__Sisx QuicktimeMov_Brand = 1936290680
	QuicktimeMov_Brand__Siti QuicktimeMov_Brand = 1936290921
	QuicktimeMov_Brand__Sitv QuicktimeMov_Brand = 1936290934
	QuicktimeMov_Brand__Slh1 QuicktimeMov_Brand = 1936484401
	QuicktimeMov_Brand__Slh2 QuicktimeMov_Brand = 1936484402
	QuicktimeMov_Brand__Slh3 QuicktimeMov_Brand = 1936484403
	QuicktimeMov_Brand__Ssss QuicktimeMov_Brand = 1936946035
	QuicktimeMov_Brand__Ttml QuicktimeMov_Brand = 1953787244
	QuicktimeMov_Brand__Ttwv QuicktimeMov_Brand = 1953789814
	QuicktimeMov_Brand__Uhvi QuicktimeMov_Brand = 1969780329
	QuicktimeMov_Brand__Unif QuicktimeMov_Brand = 1970170214
	QuicktimeMov_Brand__Uvvu QuicktimeMov_Brand = 1970697845
	QuicktimeMov_Brand__V3mp QuicktimeMov_Brand = 1983081840
	QuicktimeMov_Brand__V3mt QuicktimeMov_Brand = 1983081844
	QuicktimeMov_Brand__V3nt QuicktimeMov_Brand = 1983082100
	QuicktimeMov_Brand__V3st QuicktimeMov_Brand = 1983083380
	QuicktimeMov_Brand__Vvci QuicktimeMov_Brand = 1987470185
	QuicktimeMov_Brand__Vvoi QuicktimeMov_Brand = 1987473257
	QuicktimeMov_Brand__Vwpt QuicktimeMov_Brand = 1987539060
	QuicktimeMov_Brand__Yt4 QuicktimeMov_Brand = 2037658656
)
var values_QuicktimeMov_Brand = map[QuicktimeMov_Brand]struct{}{862401121: {}, 862414134: {}, 862414135: {}, 862414137: {}, 862414393: {}, 862414646: {}, 862414649: {}, 862414905: {}, 862416185: {}, 862416193: {}, 862416948: {}, 862416949: {}, 862416950: {}, 862416951: {}, 862416952: {}, 862416953: {}, 862417462: {}, 862417465: {}, 862417718: {}, 862417721: {}, 862417976: {}, 862417977: {}, 862418038: {}, 862418546: {}, 863400545: {}, 863400546: {}, 863400557: {}, 1095914057: {}, 1128351056: {}, 1128555891: {}, 1244811312: {}, 1244811313: {}, 1279476039: {}, 1295270176: {}, 1295270432: {}, 1295274016: {}, 1295275552: {}, 1296118081: {}, 1296118082: {}, 1296454477: {}, 1296520022: {}, 1297109065: {}, 1297305174: {}, 1298743618: {}, 1298743619: {}, 1298743662: {}, 1298743925: {}, 1298744173: {}, 1298745409: {}, 1298745410: {}, 1298745413: {}, 1298747506: {}, 1380930387: {}, 1397047637: {}, 1397047883: {}, 1480676931: {}, 1633973353: {}, 1634296883: {}, 1635135537: {}, 1635148593: {}, 1635148649: {}, 1635148659: {}, 1635148901: {}, 1635150182: {}, 1635150191: {}, 1635150195: {}, 1650620525: {}, 1667314797: {}, 1667314803: {}, 1667326305: {}, 1667326307: {}, 1667326572: {}, 1667329377: {}, 1667329379: {}, 1667330422: {}, 1667330933: {}, 1667458401: {}, 1667458662: {}, 1667525937: {}, 1667525940: {}, 1667588451: {}, 1667655780: {}, 1667658596: {}, 1667785777: {}, 1667785778: {}, 1667785830: {}, 1667786102: {}, 1667786801: {}, 1667786852: {}, 1667853940: {}, 1668048689: {}, 1668048690: {}, 1668113970: {}, 1668114019: {}, 1668114022: {}, 1668114028: {}, 1668114035: {}, 1668114541: {}, 1668114547: {}, 1668246896: {}, 1668507697: {}, 1668637745: {}, 1668637746: {}, 1668637752: {}, 1668637753: {}, 1668642404: {}, 1668704612: {}, 1668707939: {}, 1668773492: {}, 1684090977: {}, 1684090978: {}, 1684091233: {}, 1684091234: {}, 1684091489: {}, 1684091490: {}, 1684091745: {}, 1684091746: {}, 1684108136: {}, 1684175153: {}, 1684890161: {}, 1685286259: {}, 1685353265: {}, 1685353266: {}, 1685353267: {}, 1685467489: {}, 1685467490: {}, 1685467745: {}, 1685467746: {}, 1685468001: {}, 1685468002: {}, 1685484081: {}, 1685484593: {}, 1685614368: {}, 1701671783: {}, 1751476579: {}, 1751476589: {}, 1751476595: {}, 1751476600: {}, 1751478121: {}, 1751479907: {}, 1751479908: {}, 1751479913: {}, 1751479917: {}, 1751479923: {}, 1751479928: {}, 1752589157: {}, 1752589161: {}, 1752589176: {}, 1752593513: {}, 1768317281: {}, 1768317288: {}, 1768317289: {}, 1768317299: {}, 1768317301: {}, 1768317302: {}, 1768319076: {}, 1768319080: {}, 1768319090: {}, 1768319091: {}, 1768319093: {}, 1768319096: {}, 1768321645: {}, 1768321892: {}, 1768763753: {}, 1768763764: {}, 1768764009: {}, 1768764020: {}, 1769169714: {}, 1769172786: {}, 1769172787: {}, 1769172788: {}, 1769172789: {}, 1769172790: {}, 1769172791: {}, 1769172792: {}, 1769172793: {}, 1769172833: {}, 1769172834: {}, 1769172835: {}, 1769172845: {}, 1781688691: {}, 1781689193: {}, 1781689203: {}, 1785737760: {}, 1785750887: {}, 1785751411: {}, 1785752864: {}, 1785753449: {}, 1785754473: {}, 1785755680: {}, 1785755746: {}, 1786276896: {}, 1786278688: {}, 1786278755: {}, 1786278761: {}, 1786278771: {}, 1818784869: {}, 1818784873: {}, 1819112295: {}, 1835622758: {}, 1835623985: {}, 1835623986: {}, 1835676275: {}, 1835692082: {}, 1836069425: {}, 1836069937: {}, 1836069938: {}, 1836070705: {}, 1836086630: {}, 1836278888: {}, 1836279345: {}, 1836280184: {}, 1852402543: {}, 1852601196: {}, 1852989811: {}, 1868640868: {}, 1868653164: {}, 1868850022: {}, 1869443184: {}, 1869637170: {}, 1869641778: {}, 1870029936: {}, 1870031993: {}, 1885431398: {}, 1885433441: {}, 1885955686: {}, 1886217830: {}, 1886287465: {}, 1886545252: {}, 1903435808: {}, 1919249519: {}, 1919513464: {}, 1935963680: {}, 1936027254: {}, 1936289139: {}, 1936290680: {}, 1936290921: {}, 1936290934: {}, 1936484401: {}, 1936484402: {}, 1936484403: {}, 1936946035: {}, 1953787244: {}, 1953789814: {}, 1969780329: {}, 1970170214: {}, 1970697845: {}, 1983081840: {}, 1983081844: {}, 1983082100: {}, 1983083380: {}, 1987470185: {}, 1987473257: {}, 1987539060: {}, 2037658656: {}}
func (v QuicktimeMov_Brand) isDefined() bool {
	_, ok := values_QuicktimeMov_Brand[v]
	return ok
}
type QuicktimeMov struct {
	Atoms *QuicktimeMov_AtomList
	_io *kaitai.Stream
	_root *QuicktimeMov
	_parent kaitai.Struct
}
func NewQuicktimeMov() *QuicktimeMov {
	return &QuicktimeMov{
	}
}

func (this QuicktimeMov) IO_() *kaitai.Stream {
	return this._io
}

func (this *QuicktimeMov) Read(io *kaitai.Stream, parent kaitai.Struct, root *QuicktimeMov) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp1 := NewQuicktimeMov_AtomList()
	err = tmp1.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.Atoms = tmp1
	return err
}
type QuicktimeMov_Atom struct {
	Len32 uint32
	AtomType QuicktimeMov_AtomType
	Len64 uint64
	Body interface{}
	_io *kaitai.Stream
	_root *QuicktimeMov
	_parent *QuicktimeMov_AtomList
	_raw_Body []byte
	_f_len bool
	len int
}
func NewQuicktimeMov_Atom() *QuicktimeMov_Atom {
	return &QuicktimeMov_Atom{
	}
}

func (this QuicktimeMov_Atom) IO_() *kaitai.Stream {
	return this._io
}

func (this *QuicktimeMov_Atom) Read(io *kaitai.Stream, parent *QuicktimeMov_AtomList, root *QuicktimeMov) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp2, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.Len32 = uint32(tmp2)
	tmp3, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.AtomType = QuicktimeMov_AtomType(tmp3)
	if (this.Len32 == 1) {
		tmp4, err := this._io.ReadU8be()
		if err != nil {
			return err
		}
		this.Len64 = uint64(tmp4)
	}
	switch (this.AtomType) {
	case QuicktimeMov_AtomType__Dinf:
		tmp5, err := this.Len()
		if err != nil {
			return err
		}
		tmp6, err := this._io.ReadBytes(int(tmp5))
		if err != nil {
			return err
		}
		tmp6 = tmp6
		this._raw_Body = tmp6
		_io__raw_Body := kaitai.NewStream(bytes.NewReader(this._raw_Body))
		tmp7 := NewQuicktimeMov_AtomList()
		err = tmp7.Read(_io__raw_Body, this, this._root)
		if err != nil {
			return err
		}
		this.Body = tmp7
	case QuicktimeMov_AtomType__Ftyp:
		tmp8, err := this.Len()
		if err != nil {
			return err
		}
		tmp9, err := this._io.ReadBytes(int(tmp8))
		if err != nil {
			return err
		}
		tmp9 = tmp9
		this._raw_Body = tmp9
		_io__raw_Body := kaitai.NewStream(bytes.NewReader(this._raw_Body))
		tmp10 := NewQuicktimeMov_FtypBody()
		err = tmp10.Read(_io__raw_Body, this, this._root)
		if err != nil {
			return err
		}
		this.Body = tmp10
	case QuicktimeMov_AtomType__Mdia:
		tmp11, err := this.Len()
		if err != nil {
			return err
		}
		tmp12, err := this._io.ReadBytes(int(tmp11))
		if err != nil {
			return err
		}
		tmp12 = tmp12
		this._raw_Body = tmp12
		_io__raw_Body := kaitai.NewStream(bytes.NewReader(this._raw_Body))
		tmp13 := NewQuicktimeMov_AtomList()
		err = tmp13.Read(_io__raw_Body, this, this._root)
		if err != nil {
			return err
		}
		this.Body = tmp13
	case QuicktimeMov_AtomType__Minf:
		tmp14, err := this.Len()
		if err != nil {
			return err
		}
		tmp15, err := this._io.ReadBytes(int(tmp14))
		if err != nil {
			return err
		}
		tmp15 = tmp15
		this._raw_Body = tmp15
		_io__raw_Body := kaitai.NewStream(bytes.NewReader(this._raw_Body))
		tmp16 := NewQuicktimeMov_AtomList()
		err = tmp16.Read(_io__raw_Body, this, this._root)
		if err != nil {
			return err
		}
		this.Body = tmp16
	case QuicktimeMov_AtomType__Moof:
		tmp17, err := this.Len()
		if err != nil {
			return err
		}
		tmp18, err := this._io.ReadBytes(int(tmp17))
		if err != nil {
			return err
		}
		tmp18 = tmp18
		this._raw_Body = tmp18
		_io__raw_Body := kaitai.NewStream(bytes.NewReader(this._raw_Body))
		tmp19 := NewQuicktimeMov_AtomList()
		err = tmp19.Read(_io__raw_Body, this, this._root)
		if err != nil {
			return err
		}
		this.Body = tmp19
	case QuicktimeMov_AtomType__Moov:
		tmp20, err := this.Len()
		if err != nil {
			return err
		}
		tmp21, err := this._io.ReadBytes(int(tmp20))
		if err != nil {
			return err
		}
		tmp21 = tmp21
		this._raw_Body = tmp21
		_io__raw_Body := kaitai.NewStream(bytes.NewReader(this._raw_Body))
		tmp22 := NewQuicktimeMov_AtomList()
		err = tmp22.Read(_io__raw_Body, this, this._root)
		if err != nil {
			return err
		}
		this.Body = tmp22
	case QuicktimeMov_AtomType__Mvhd:
		tmp23, err := this.Len()
		if err != nil {
			return err
		}
		tmp24, err := this._io.ReadBytes(int(tmp23))
		if err != nil {
			return err
		}
		tmp24 = tmp24
		this._raw_Body = tmp24
		_io__raw_Body := kaitai.NewStream(bytes.NewReader(this._raw_Body))
		tmp25 := NewQuicktimeMov_MvhdBody()
		err = tmp25.Read(_io__raw_Body, this, this._root)
		if err != nil {
			return err
		}
		this.Body = tmp25
	case QuicktimeMov_AtomType__Stbl:
		tmp26, err := this.Len()
		if err != nil {
			return err
		}
		tmp27, err := this._io.ReadBytes(int(tmp26))
		if err != nil {
			return err
		}
		tmp27 = tmp27
		this._raw_Body = tmp27
		_io__raw_Body := kaitai.NewStream(bytes.NewReader(this._raw_Body))
		tmp28 := NewQuicktimeMov_AtomList()
		err = tmp28.Read(_io__raw_Body, this, this._root)
		if err != nil {
			return err
		}
		this.Body = tmp28
	case QuicktimeMov_AtomType__Tkhd:
		tmp29, err := this.Len()
		if err != nil {
			return err
		}
		tmp30, err := this._io.ReadBytes(int(tmp29))
		if err != nil {
			return err
		}
		tmp30 = tmp30
		this._raw_Body = tmp30
		_io__raw_Body := kaitai.NewStream(bytes.NewReader(this._raw_Body))
		tmp31 := NewQuicktimeMov_TkhdBody()
		err = tmp31.Read(_io__raw_Body, this, this._root)
		if err != nil {
			return err
		}
		this.Body = tmp31
	case QuicktimeMov_AtomType__Traf:
		tmp32, err := this.Len()
		if err != nil {
			return err
		}
		tmp33, err := this._io.ReadBytes(int(tmp32))
		if err != nil {
			return err
		}
		tmp33 = tmp33
		this._raw_Body = tmp33
		_io__raw_Body := kaitai.NewStream(bytes.NewReader(this._raw_Body))
		tmp34 := NewQuicktimeMov_AtomList()
		err = tmp34.Read(_io__raw_Body, this, this._root)
		if err != nil {
			return err
		}
		this.Body = tmp34
	case QuicktimeMov_AtomType__Trak:
		tmp35, err := this.Len()
		if err != nil {
			return err
		}
		tmp36, err := this._io.ReadBytes(int(tmp35))
		if err != nil {
			return err
		}
		tmp36 = tmp36
		this._raw_Body = tmp36
		_io__raw_Body := kaitai.NewStream(bytes.NewReader(this._raw_Body))
		tmp37 := NewQuicktimeMov_AtomList()
		err = tmp37.Read(_io__raw_Body, this, this._root)
		if err != nil {
			return err
		}
		this.Body = tmp37
	default:
		tmp38, err := this.Len()
		if err != nil {
			return err
		}
		tmp39, err := this._io.ReadBytes(int(tmp38))
		if err != nil {
			return err
		}
		tmp39 = tmp39
		this._raw_Body = tmp39
	}
	return err
}
func (this *QuicktimeMov_Atom) Len() (v int, err error) {
	if (this._f_len) {
		return this.len, nil
	}
	this._f_len = true
	var tmp40 int;
	if (this.Len32 == 0) {
		tmp41, err := this._io.Size()
		if err != nil {
			return 0, err
		}
		tmp40 = tmp41 - 8
	} else {
		var tmp42 int;
		if (this.Len32 == 1) {
			tmp42 = this.Len64 - 16
		} else {
			tmp42 = this.Len32 - 8
		}
		tmp40 = tmp42
	}
	this.len = int(tmp40)
	return this.len, nil
}
type QuicktimeMov_AtomList struct {
	Items []*QuicktimeMov_Atom
	_io *kaitai.Stream
	_root *QuicktimeMov
	_parent kaitai.Struct
}
func NewQuicktimeMov_AtomList() *QuicktimeMov_AtomList {
	return &QuicktimeMov_AtomList{
	}
}

func (this QuicktimeMov_AtomList) IO_() *kaitai.Stream {
	return this._io
}

func (this *QuicktimeMov_AtomList) Read(io *kaitai.Stream, parent kaitai.Struct, root *QuicktimeMov) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	for i := 0;; i++ {
		tmp43, err := this._io.EOF()
		if err != nil {
			return err
		}
		if tmp43 {
			break
		}
		tmp44 := NewQuicktimeMov_Atom()
		err = tmp44.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.Items = append(this.Items, tmp44)
	}
	return err
}

/**
 * Fixed-point 16-bit number.
 */
type QuicktimeMov_Fixed16 struct {
	IntPart int8
	FracPart uint8
	_io *kaitai.Stream
	_root *QuicktimeMov
	_parent *QuicktimeMov_MvhdBody
}
func NewQuicktimeMov_Fixed16() *QuicktimeMov_Fixed16 {
	return &QuicktimeMov_Fixed16{
	}
}

func (this QuicktimeMov_Fixed16) IO_() *kaitai.Stream {
	return this._io
}

func (this *QuicktimeMov_Fixed16) Read(io *kaitai.Stream, parent *QuicktimeMov_MvhdBody, root *QuicktimeMov) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp45, err := this._io.ReadS1()
	if err != nil {
		return err
	}
	this.IntPart = tmp45
	tmp46, err := this._io.ReadU1()
	if err != nil {
		return err
	}
	this.FracPart = tmp46
	return err
}

/**
 * Fixed-point 32-bit number.
 */
type QuicktimeMov_Fixed32 struct {
	IntPart int16
	FracPart uint16
	_io *kaitai.Stream
	_root *QuicktimeMov
	_parent kaitai.Struct
}
func NewQuicktimeMov_Fixed32() *QuicktimeMov_Fixed32 {
	return &QuicktimeMov_Fixed32{
	}
}

func (this QuicktimeMov_Fixed32) IO_() *kaitai.Stream {
	return this._io
}

func (this *QuicktimeMov_Fixed32) Read(io *kaitai.Stream, parent kaitai.Struct, root *QuicktimeMov) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp47, err := this._io.ReadS2be()
	if err != nil {
		return err
	}
	this.IntPart = int16(tmp47)
	tmp48, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.FracPart = uint16(tmp48)
	return err
}

/**
 * @see <a href="https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap1/qtff1.html#//apple_ref/doc/uid/TP40000939-CH203-CJBCBIFF">Source</a>
 */
type QuicktimeMov_FtypBody struct {
	MajorBrand QuicktimeMov_Brand
	MinorVersion []byte
	CompatibleBrands []QuicktimeMov_Brand
	_io *kaitai.Stream
	_root *QuicktimeMov
	_parent *QuicktimeMov_Atom
}
func NewQuicktimeMov_FtypBody() *QuicktimeMov_FtypBody {
	return &QuicktimeMov_FtypBody{
	}
}

func (this QuicktimeMov_FtypBody) IO_() *kaitai.Stream {
	return this._io
}

func (this *QuicktimeMov_FtypBody) Read(io *kaitai.Stream, parent *QuicktimeMov_Atom, root *QuicktimeMov) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp49, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.MajorBrand = QuicktimeMov_Brand(tmp49)
	tmp50, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp50 = tmp50
	this.MinorVersion = tmp50
	for i := 0;; i++ {
		tmp51, err := this._io.EOF()
		if err != nil {
			return err
		}
		if tmp51 {
			break
		}
		tmp52, err := this._io.ReadU4be()
		if err != nil {
			return err
		}
		this.CompatibleBrands = append(this.CompatibleBrands, QuicktimeMov_Brand(tmp52))
	}
	return err
}

/**
 * @see <a href="https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-BBCGFGJG">Source</a>
 */
type QuicktimeMov_MvhdBody struct {
	Version uint8
	Flags []byte
	CreationTime uint32
	ModificationTime uint32
	TimeScale uint32
	Duration uint32
	PreferredRate *QuicktimeMov_Fixed32
	PreferredVolume *QuicktimeMov_Fixed16
	Reserved1 []byte
	Matrix []byte
	PreviewTime uint32
	PreviewDuration uint32
	PosterTime uint32
	SelectionTime uint32
	SelectionDuration uint32
	CurrentTime uint32
	NextTrackId uint32
	_io *kaitai.Stream
	_root *QuicktimeMov
	_parent *QuicktimeMov_Atom
}
func NewQuicktimeMov_MvhdBody() *QuicktimeMov_MvhdBody {
	return &QuicktimeMov_MvhdBody{
	}
}

func (this QuicktimeMov_MvhdBody) IO_() *kaitai.Stream {
	return this._io
}

func (this *QuicktimeMov_MvhdBody) Read(io *kaitai.Stream, parent *QuicktimeMov_Atom, root *QuicktimeMov) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp53, err := this._io.ReadU1()
	if err != nil {
		return err
	}
	this.Version = tmp53
	tmp54, err := this._io.ReadBytes(int(3))
	if err != nil {
		return err
	}
	tmp54 = tmp54
	this.Flags = tmp54
	tmp55, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.CreationTime = uint32(tmp55)
	tmp56, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.ModificationTime = uint32(tmp56)
	tmp57, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TimeScale = uint32(tmp57)
	tmp58, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.Duration = uint32(tmp58)
	tmp59 := NewQuicktimeMov_Fixed32()
	err = tmp59.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.PreferredRate = tmp59
	tmp60 := NewQuicktimeMov_Fixed16()
	err = tmp60.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.PreferredVolume = tmp60
	tmp61, err := this._io.ReadBytes(int(10))
	if err != nil {
		return err
	}
	tmp61 = tmp61
	this.Reserved1 = tmp61
	tmp62, err := this._io.ReadBytes(int(36))
	if err != nil {
		return err
	}
	tmp62 = tmp62
	this.Matrix = tmp62
	tmp63, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.PreviewTime = uint32(tmp63)
	tmp64, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.PreviewDuration = uint32(tmp64)
	tmp65, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.PosterTime = uint32(tmp65)
	tmp66, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.SelectionTime = uint32(tmp66)
	tmp67, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.SelectionDuration = uint32(tmp67)
	tmp68, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.CurrentTime = uint32(tmp68)
	tmp69, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.NextTrackId = uint32(tmp69)
	return err
}

/**
 * Version of this movie header atom
 */

/**
 * A time value that indicates the time scale for this
 * movie - the number of time units that pass per second
 * in its time coordinate system. A time coordinate system that
 * measures time in sixtieths of a second, for example, has a
 * time scale of 60.
 */

/**
 * A time value that indicates the duration of the movie in
 * time scale units. Note that this property is derived from
 * the movie's tracks. The value of this field corresponds to
 * the duration of the longest track in the movie.
 */

/**
 * The rate at which to play this movie. A value of 1.0 indicates normal rate.
 */

/**
 * How loud to play this movie's sound. A value of 1.0 indicates full volume.
 */

/**
 * A matrix shows how to map points from one coordinate space into another.
 */

/**
 * The time value in the movie at which the preview begins.
 */

/**
 * The duration of the movie preview in movie time scale units.
 */

/**
 * The time value of the time of the movie poster.
 */

/**
 * The time value for the start time of the current selection.
 */

/**
 * The duration of the current selection in movie time scale units.
 */

/**
 * The time value for current time position within the movie.
 */

/**
 * Indicates a value to use for the track ID number of the next
 * track added to this movie. Note that 0 is not a valid track
 * ID value.
 */

/**
 * @see <a href="https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25550">Source</a>
 */
type QuicktimeMov_TkhdBody struct {
	Version uint8
	Flags []byte
	CreationTime uint32
	ModificationTime uint32
	TrackId uint32
	Reserved1 []byte
	Duration uint32
	Reserved2 []byte
	Layer uint16
	AlternativeGroup uint16
	Volume uint16
	Reserved3 uint16
	Matrix []byte
	Width *QuicktimeMov_Fixed32
	Height *QuicktimeMov_Fixed32
	_io *kaitai.Stream
	_root *QuicktimeMov
	_parent *QuicktimeMov_Atom
}
func NewQuicktimeMov_TkhdBody() *QuicktimeMov_TkhdBody {
	return &QuicktimeMov_TkhdBody{
	}
}

func (this QuicktimeMov_TkhdBody) IO_() *kaitai.Stream {
	return this._io
}

func (this *QuicktimeMov_TkhdBody) Read(io *kaitai.Stream, parent *QuicktimeMov_Atom, root *QuicktimeMov) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp70, err := this._io.ReadU1()
	if err != nil {
		return err
	}
	this.Version = tmp70
	tmp71, err := this._io.ReadBytes(int(3))
	if err != nil {
		return err
	}
	tmp71 = tmp71
	this.Flags = tmp71
	tmp72, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.CreationTime = uint32(tmp72)
	tmp73, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.ModificationTime = uint32(tmp73)
	tmp74, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TrackId = uint32(tmp74)
	tmp75, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp75 = tmp75
	this.Reserved1 = tmp75
	tmp76, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.Duration = uint32(tmp76)
	tmp77, err := this._io.ReadBytes(int(8))
	if err != nil {
		return err
	}
	tmp77 = tmp77
	this.Reserved2 = tmp77
	tmp78, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.Layer = uint16(tmp78)
	tmp79, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.AlternativeGroup = uint16(tmp79)
	tmp80, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.Volume = uint16(tmp80)
	tmp81, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.Reserved3 = uint16(tmp81)
	tmp82, err := this._io.ReadBytes(int(36))
	if err != nil {
		return err
	}
	tmp82 = tmp82
	this.Matrix = tmp82
	tmp83 := NewQuicktimeMov_Fixed32()
	err = tmp83.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.Width = tmp83
	tmp84 := NewQuicktimeMov_Fixed32()
	err = tmp84.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.Height = tmp84
	return err
}

/**
 * Integer that uniquely identifies the track. The value 0 cannot be used.
 */