/* NAME RtpToTsConverter.go - provides utilities for the conversion of Rtp packets to equivalent MpegTs packets. DESCRIPTION See Readme.md AUTHOR Saxon Nelson-Milton LICENSE RtpToTsConverter.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 [GNU licenses](http://www.gnu.org/licenses). */ package rtmp // #include "RTMPWrapper.h" import "C" import ( "errors" ) type RTMPSession interface { StartSession() WriteFrame(data []byte, dataLength uint) EndSession() } type rtmpSession struct { rtmp *C.struct_RTMP url string timeout uint } func NewRTMPSession(url string, connectTimeout uint) (session *rtmpSession){ session = new(rtmpSession) session.url = url session.timeout = connectTimeout return } func (s *rtmpSession) StartSession() error { if !bool(C.RTMP_start_session(s.rtmp, C.CString(s.url), C.uint(connect_timeout))) { return errors.New("RTMP start error! Check rtmp log for details!") } return nil } func (s *rtmpSession) WriteFrame(data []byte, dataLength uint) error { if !bool(C.RTMP_write_frame(s.rtmp, (*C.char)(unsafe.Pointer(&data[0])), C.uint(data_length))) { return errors.New("RTMP write error! Check rtmp log for details!") } return nil } func (s *rtmpSession) EndSession() error { if !bool(C.RTMP_end_session(s.rtmp)) { return errors.New("RTMP end session error! Check rtmp log for details!") } return nil }