@@ -7,53 +7,30 @@ import (
77 "github.com/danielpaulus/quicktime_video_hack/screencapture/coremedia"
88)
99
10- //AsynFeedPacket contains a CMSampleBuffer and there the actual video data
11- type AsynFeedPacket struct {
12- AsyncMagic uint32
10+ //AsynCmSampleBufPacket contains a CMSampleBuffer with audio or video data
11+ type AsynCmSampleBufPacket struct {
1312 ClockRef CFTypeID
14- MessageType uint32
1513 CMSampleBuf coremedia.CMSampleBuffer
1614}
1715
18- //AsynEatPacket contains a CMSampleBuffer with audio data
19- type AsynEatPacket struct {
20- AsyncMagic uint32
21- ClockRef CFTypeID
22- MessageType uint32
23- CMSampleBuf coremedia.CMSampleBuffer
24- }
25-
26- //NewAsynEatPacketFromBytes parses a new AsynEatPacket from bytes
27- func NewAsynEatPacketFromBytes (data []byte ) (AsynEatPacket , error ) {
28- clockRef , sBuf , err := newAsynCmSampleBufferPacketFromBytes (data , EAT )
16+ //NewAsynCmSampleBufPacketFromBytes parses a new AsynCmSampleBufPacket from bytes
17+ func NewAsynCmSampleBufPacketFromBytes (data []byte ) (AsynCmSampleBufPacket , error ) {
18+ clockRef , sBuf , err := newAsynCmSampleBufferPacketFromBytes (data )
2919 if err != nil {
30- return AsynEatPacket {}, err
20+ return AsynCmSampleBufPacket {}, err
3121 }
32- return AsynEatPacket { AsyncMagic : AsynPacketMagic , ClockRef : clockRef , MessageType : EAT , CMSampleBuf : sBuf }, nil
22+ return AsynCmSampleBufPacket { ClockRef : clockRef , CMSampleBuf : sBuf }, nil
3323}
3424
35- //NewAsynFeedPacketFromBytes parses a new AsynFeedPacket from bytes
36- func NewAsynFeedPacketFromBytes (data [] byte ) ( AsynFeedPacket , error ) {
37- clockRef , sBuf , err := newAsynCmSampleBufferPacketFromBytes (data , FEED )
25+ func newAsynCmSampleBufferPacketFromBytes ( data [] byte ) ( CFTypeID , coremedia. CMSampleBuffer , error ) {
26+ magic := binary . LittleEndian . Uint32 (data [ 12 :])
27+ _ , clockRef , err := ParseAsynHeader (data , magic )
3828 if err != nil {
39- return AsynFeedPacket {}, err
29+ return 0 , coremedia. CMSampleBuffer {}, err
4030 }
41- return AsynFeedPacket {AsyncMagic : AsynPacketMagic , ClockRef : clockRef , MessageType : FEED , CMSampleBuf : sBuf }, nil
42- }
43-
44- func newAsynCmSampleBufferPacketFromBytes (data []byte , magic uint32 ) (CFTypeID , coremedia.CMSampleBuffer , error ) {
4531
46- asyncMagic := binary .LittleEndian .Uint32 (data )
47- if asyncMagic != AsynPacketMagic {
48- return 0 , coremedia.CMSampleBuffer {}, fmt .Errorf ("invalid asyn magic: %x" , data )
49- }
50- clockRef := binary .LittleEndian .Uint64 (data [4 :])
51- messageType := binary .LittleEndian .Uint32 (data [12 :])
52- if messageType != magic {
53- return 0 , coremedia.CMSampleBuffer {}, fmt .Errorf ("invalid packet type in asyn cmsamplebufferpacket:%x" , data )
54- }
5532 var cMSampleBuf coremedia.CMSampleBuffer
56- var err error
33+
5734 if magic == FEED {
5835 cMSampleBuf , err = coremedia .NewCMSampleBufferFromBytesVideo (data [16 :])
5936 if err != nil {
@@ -69,10 +46,6 @@ func newAsynCmSampleBufferPacketFromBytes(data []byte, magic uint32) (CFTypeID,
6946 return clockRef , cMSampleBuf , nil
7047}
7148
72- func (sp AsynFeedPacket ) String () string {
73- return fmt .Sprintf ("ASYN_FEED{ClockRef:%x, sBuf:%s}" , sp .ClockRef , sp .CMSampleBuf .String ())
74- }
75-
76- func (sp AsynEatPacket ) String () string {
77- return fmt .Sprintf ("ASYN_EAT!{ClockRef:%x, sBuf:%s}" , sp .ClockRef , sp .CMSampleBuf .String ())
49+ func (sp AsynCmSampleBufPacket ) String () string {
50+ return fmt .Sprintf ("ASYN_SBUF{ClockRef:%x, sBuf:%s}" , sp .ClockRef , sp .CMSampleBuf .String ())
7851}
0 commit comments