/* NAME amf_headers.go DESCRIPTION See Readme.md AUTHORS Saxon Nelson-Milton LICENSE amf_headers.go is Copyright (C) 2017 the Australian Ocean Lab (AusOcean) It is free software: you can redistribute it and/or modify them under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with revid in gpl.txt. If not, see http://www.gnu.org/licenses. Derived from librtmp under the GNU Lesser General Public License 2.1 Copyright (C) 2005-2008 Team XBMC http://www.xbmc.org Copyright (C) 2008-2009 Andrej Stepanchuk Copyright (C) 2009-2010 Howard Chu */ package rtmp import ( "unsafe" ) const ( AMF_NUMBER = iota AMF_BOOLEAN AMF_STRING AMF_OBJECT AMF_MOVIECLIP /* reserved, not used */ AMF_NULL AMF_UNDEFINED AMF_REFERENCE AMF_ECMA_ARRAY AMF_OBJECT_END AMF_STRICT_ARRAY AMF_DATE AMF_LONG_STRING AMF_UNSUPPORTED AMF_RECORDSET /* reserved, not used */ AMF_XML_DOC AMF_TYPED_OBJECT AMF_AVMPLUS /* switch to AMF3 */ AMF_INVALID = 0xff ) // typedef enum // amf.h +40 type C_AMFDataType int32 // typedef struct C_AVal // amf.h +57 type C_AVal struct { av_val *byte av_len int32 } // C_AVal is in amf.h // amf.h +62 func AVC(str string) C_AVal { var aval C_AVal if len(str) != 0 { aval.av_val = &([]byte(str)[0]) } else { aval.av_val = nil } aval.av_len = int32(len(str)) return aval } func CAV(av *C_AVal) string { return string((*[_Gi]byte)(unsafe.Pointer(av.av_val))[:av.av_len]) } // #define AVMATCH(a1,a2) // amf.h +63 func C_AVMATCH(a1, a2 *C_AVal) int32 { if a1.av_len == a2.av_len && memcmp(unsafe.Pointer(a1.av_val), unsafe.Pointer(a2.av_val), int(a1.av_len)) == 0 { return 1 } else { return 0 } } // typedef struct AMF_Object // amf.h +67 type C_AMFObject struct { o_num int32 o_props *C_AMFObjectProperty } // typedef struct P_vu // amf.h +73 type P_vu struct { p_number float64 p_aval C_AVal p_object C_AMFObject } // typedef struct AMFObjectProperty // amf.h +79 type C_AMFObjectProperty struct { p_name C_AVal p_type C_AMFDataType p_vu P_vu p_UTCoffset int16 }