Commit Graph

184 Commits

Author SHA1 Message Date
Saxon 191be04b11 revid: added support for MJPEG packetisation
Changes included adding support for variable InputCodec that may be set via netreceiver/vidgrind to set to H264/MJPEG. Also setting revid's lexTo
function to mjpeg.Lex in the case of an MJPEG InputCodec. Added options parameter to mts.NewEncoder function so that we can change options of the
encoder, namely whether it bases PSI interval on NAL type, or number of frames - in the case of MJPEG we based PSI interval on number of frames.
2019-09-24 07:42:26 +09:30
Dan Kortschak 8a9d914283 container/mts: use uint16 for media PID 2019-09-15 09:27:26 +09:30
Trek H c3df750175 mts: set nalbasedpsi to false for audio 2019-09-12 23:12:55 +09:30
Trek H e7a02a818f mts: fixed type conversion 2019-09-12 21:29:40 +09:30
Trek H 2c7e28206d Merge branch 'master' into adpcm-mts 2019-09-12 21:11:50 +09:30
Trek H 96035f6d8b adpcm and mts: comments and pid change 2019-09-12 19:16:11 +09:30
Saxon e0509e7e61 codec/containter/mts/encoder_test.go: fixed bug in test 2019-09-11 09:57:45 +09:30
Saxon e57e14678a container/mts: using RealTime type from utils package instead of global vars with mutator functions 2019-08-26 13:29:07 +09:30
Saxon b9cd6b3f13 container/mts/encoder.go: using NALTypeSPS from h264dec package 2019-08-26 09:24:18 +09:30
Saxon 817cc86a34 revid: now have MinPeriod and ClipDuration params
This change included a rename of IntraRefreshPeriod to MinPeriod, and the addition of the ClipDuration param. PSI are now written before IDR. Clips are no longer outputed
based on PSI but rather a time ClipDuration, where ClipDuration >= MinPeriod, however, PSI must still be at the beginning of each clip. Also created functionality to update
meta time even if we don't have a response to update.
2019-08-25 20:42:01 +09:30
Saxon c9d30ad807 codec/h264/h264dec: added helper function to get first MediaPID found in a stream map 2019-08-07 16:15:50 +09:30
Saxon Milton f6c296de01 Merged in media-pids (pull request )
container/mts/mpegts.go: added Programs, Streams and MediaStreams functions

Approved-by: Alan Noble <anoble@gmail.com>
2019-08-06 12:01:11 +00:00
Saxon a19c0f4ec3 container/mts/mpegts.go: fixed nil map bug in FindPSI 2019-08-06 15:40:37 +09:30
Saxon ed11fac655 container/mts/mpegts.go: FindPSI now returns a map[uint16]uint8 containing program PIDs and their types instead of []psi.PmtElementaryStream 2019-08-06 15:38:34 +09:30
Saxon 0cb9a50af8 container/mts/mpegts_test.go: added some more interesting test cases for FindPSI 2019-08-05 14:11:28 +09:30
Trek H 3f29f0c84e Merge branch 'master' into revid-audio 2019-08-02 23:32:21 +09:30
Saxon c55cd9a64e container/mts: wrote test for FindPSI and corrected bugs
Wrote the FindPSI test which revealed a bug regarding creation of a PMT using comcast gots. This was fixed by writing Payload function and
extracting payload of PMT packet before giving to psi.NewPMT.
2019-07-26 14:16:05 +09:30
Saxon 0825799cfa container/mts/mpegts.go: renamed IndexPid to FindPSIs and change such that only looked for PSI
We have only ever used this function to find PSI so it makes sense to make it exclusive for this. It now also returns the streams found in the PMT. So that
we can actually retrieve the PIDs of the media and their types.
2019-07-24 12:39:18 +09:30
Saxon 4807b4fcb6 container/mts/mpegts.go: added some commenting to MediaStreams 2019-07-24 00:17:57 +09:30
Saxon bdc3b4cfc5 container/mts/mpegts.go: added Programs, Streams and MediaStreams functions 2019-07-24 00:04:10 +09:30
scruzin e76b8b3800 Tidy up errors used by GetPTS(). 2019-07-13 09:17:44 +09:30
scruzin 9e5bc3806f Added GetPTS. 2019-07-12 14:24:30 +09:30
scruzin aa67134969 Added GetPTS() function. 2019-07-12 14:01:49 +09:30
scruzin 01351a308b Added tests for IndexPid. 2019-07-11 19:29:46 +09:30
scruzin c717595adc Added length check to IndexPid. 2019-07-11 18:16:33 +09:30
scruzin c8a0b7df07 Fix IndexPid. 2019-07-11 17:33:16 +09:30
scruzin 4b57407e36 Don't wrap error unnecessarily. 2019-07-11 14:57:47 +09:30
scruzin b1e5890554 Update prev in IndexPid. 2019-07-11 14:54:06 +09:30
scruzin feea069758 Factored metaFromPMT out of ExtractMeta and added LastPid and IndexPid. 2019-07-11 14:51:23 +09:30
scruzin 90efebdc91 Added BasePMT which is a PMT without specific data, and removed StandardPMT. 2019-07-10 10:17:34 +09:30
scruzin 1728c3a531 Export StandardPAT, StandardPMT and MaxPTS. 2019-07-10 09:26:54 +09:30
Saxon 36f1e8c78b container/mts/payload.go: fixed date in license 2019-07-04 19:48:30 +09:30
Saxon 09d772e9c3 container/mts/mpegts.go: equivalent -> identical in TrimToMetaRange error message 2019-07-04 19:47:34 +09:30
Saxon d2278cb914 container/mts/payload_test.go: corrected comment for TestExtract 2019-07-04 14:40:59 +09:30
Saxon 346dda0f4f container/mts/payload.go: corrected comment for errors used in TrimToMetaRange 2019-07-04 14:40:21 +09:30
Saxon cf600d4aa8 container/mts/payload.go: corrected comment for TimeToPTSRange 2019-07-04 14:39:38 +09:30
Saxon 081fb49d54 container/mts/payload.go: corrected comment for errors used in TrimToPTSRange 2019-07-04 14:39:07 +09:30
Saxon 0f92f7d727 container/mts/payload.go: fix spelling error in comment 2019-07-04 14:38:15 +09:30
Saxon b66f11db19 container/mts/payload.go: removed space after comment 2019-07-04 14:37:43 +09:30
Saxon ac0384127c container/mts/payload.go: removed TODO that's been resolved 2019-07-04 14:37:10 +09:30
Saxon 30dd27596b container/mts/mpegts_test.go: removed var block for single var clip 2019-07-04 14:36:26 +09:30
Saxon 5bbb8d01f2 container/mts/mpegts.go: added comment for global error vars used by FindPid 2019-07-04 14:34:34 +09:30
Saxon 866aa6bef3 container/mts/meta/meta.go: altered comment for GetAll 2019-07-04 14:33:12 +09:30
Saxon edb056d19b container/mts: not using string consts for error messages 2019-07-04 14:31:49 +09:30
Saxon 3696e353f2 container/mts: fixed conflicts 2019-07-04 09:50:46 +09:30
Saxon b017e92185 container/mts: wrote more tests for GetPTSRange 2019-07-01 19:08:20 +09:30
Saxon 7bd885bcfb container/mts: fixed infinite loop 2019-07-01 14:01:49 +09:30
Saxon 0d240fa7ff container/mts: checking index so that we don't go out of bounds 2019-07-01 13:54:18 +09:30
Saxon 0497ee5302 container/mts: GetPTSRange checks for PUSI when looking for first PTS 2019-07-01 12:36:11 +09:30
Saxon ebc72cfbfc container/mts: for GetPTSRange if a second PTS is not found error is no longer returned and pts2=pts1 2019-06-29 14:58:16 +09:30
Trek H 95fc69b3c5 audio: syntax and error checking 2019-06-20 18:04:58 +09:30
Saxon 2fa6ecfe26 container/mts: added file headers for payload.go and payload_test.go 2019-06-17 20:15:26 +09:30
Saxon b42510ae22 container/mts: added Clip.SegmentForMeta and accompanying testing.
Added a function to segment a Clip into sub Clips that have a consistent meta key and value.
Also added testing for this method.
2019-06-17 20:05:11 +09:30
Saxon 74992aee19 container/mts: added commenting to SegmentForMeta and accompanying testing 2019-06-17 16:34:22 +09:30
Saxon 3eab25e18b container/mts: added SegmentForMeta func and testing
This func will further segment an MTS segment to each series of packets that
correspond to a given key and val of meta. Testing for this func has also been
written.
2019-06-17 04:30:54 +09:30
Saxon 1a233d8576 container/mts: wrote function TrimToMtsRange and added related testing
This function will return a sub slice of MPEG-TS corresponding to an interval of metadata.
Also wrote testing for this function.
2019-06-16 04:08:41 +09:30
Saxon 513e9d06ff container/mts: moved contents of metaEncode_test.go to encoder_test.go and deleted metaEncode_test.go
The contents within metaEncode_test.go were strongly related to the contents
in encoder.go, so the code was moved and the file was deleted.
2019-06-15 02:13:49 +09:30
Saxon 2bd7a009ce container/mts: BytesForMetaInterval renamed to TrimToMetaRange and now returns Clip for similar reasons to previous commit 2019-06-15 02:12:17 +09:30
Saxon ceee163b74 container/mts: BytesForPTSInterval renamed to TrimToPTSRange, and now returns a Clip
It was concluded that it would be more useful if a function that provided a data segment from
the original clip just provided a new Clip, i.e. useful things like PTS and meta is still
available in the segment. So, BytesForPTSInterval was renamed to TrimToPTSRange and now
provides a Clip. The test for this function was updated accordingly.
2019-06-15 02:04:29 +09:30
Saxon eff69e87ce container/mts: added some commenting 2019-06-14 19:33:40 +09:30
Saxon f0d1b994bf container/mts: wrote test for BytesForMetaInterval and corrected bugs 2019-06-14 19:27:19 +09:30
Saxon 5f78ef8666 container/mts: wrote function BytesForMetaInterval to return media between two points of meta. 2019-06-14 17:41:34 +09:30
Saxon 22079fcb48 container/mts: wrote test for BytesForPTSInterval and corrected bugs 2019-06-14 14:21:45 +09:30
Saxon 70eb8193cb container/mts: wrote BytesForPTSInterval
This function will return the media between two provided PTS. Binary search has been used to
find the corresponding Frames to 'from' and 'to'.
2019-06-14 01:10:00 +09:30
Trek H 9fe09255be audio and revid: changes for pr
added license to lex.go
changed pcm functions to return alsa.Buffers
style, syntax and clarification added to audio.go
new method of finding buffersize in audio.go uses a new function called nearestPowerOfTwo
2019-06-13 23:35:52 +09:30
Saxon 12c205d75f container/mts: wrote test for Clip.Bytes and generalised logic for generating frames into genFrames func 2019-06-13 18:12:17 +09:30
Saxon 1323cbcae3 container/mts: filled Clip.Bytes
writing Clip.Bytes required a change to the Clip type. The Clip type now possess a slice that
references the memory in which the Frames should reference for the media. Appropriate changes have
been made to Extract and TestExtract to accomidate this change.
2019-06-13 16:30:39 +09:30
Saxon 8f434e9703 container/mts: added payload_test.go and fixed bugs in Extract 2019-06-13 15:52:25 +09:30
Saxon b473451288 container/mts: added payload.go file with Extract function and types
payload.go has been added which will contain functionality for dealing with MTS
payloads. A function has been added called Extract, which will return a Clip. Clip
is a type representing a sequence of media frames ([]Frame). Type Frame has been
added which represents a media frame. It provides fields to hold the media as
byte slice, PTS to hold the PES timestamp, an ID for identification of codec type
and finally the relevant Meta from the most recent PMT.
2019-06-12 01:17:14 +09:30
Saxon e4bce3bcb3 container/mts: added ExtractMeta function and testing
Added function to extract meta from first PMT found in a mpegts clip. This simply
wraps the logic we've used in vidrecord, i.e. Finding the PMT, converting to a
comcast gots psi.PSIBytesm, using HasDescriptor to get the meta descriptor, and
then mapping metadata. Also added testing.
2019-06-12 01:01:51 +09:30
Saxon 482f5609e5 container/mts/meta: wrote test for GetAllAsMap 2019-06-11 22:15:27 +09:30
Saxon 9af964cfc9 container/mts/meta: added GetAllAsMap function
This function is very similar to GetAll, except that is returns a map[string]string rather
than a [][2]string. It's become apparent that a map[string]string might be more useful in
some circumstances.
2019-06-11 22:07:51 +09:30
Trek H d23f40c85d mts: updated reference to old pid vars 2019-06-06 02:54:00 +09:30
Trek H 3e2ff49420 revid: mts encoder uses exported pids 2019-06-06 00:28:26 +09:30
Trek H 90c34c4108 revid: fixed issues after merge 2019-06-03 18:35:28 +09:30
Trek H 3d7539c6df Merge branch 'master' into revid-audio 2019-06-03 17:50:48 +09:30
Saxon ecc0ab8664 container/mts/encoder.go: updated comment for Encode constants 2019-05-23 14:05:17 +09:30
Saxon 85984555a3 container/mts/encoder.go: fixed comment for pmtTable initialisation 2019-05-21 17:09:47 +09:30
Saxon d29141cf05 container/mts: changed consts H264, H265 and Audio to EncodeH264, EncodeH265 and EncodeAudio 2019-05-21 16:57:17 +09:30
Saxon 92d4c5f79a container/mts/encoder.go: generalising stream id logic 2019-05-16 16:41:52 +09:30
Saxon 548b7caa81 revid: fixed rtpPort and rtcpPort parsing and added H264 and H265 IDs
Added H264ID and H265ID consts and added logic to select this const for use in encoder based on mediaType param in NewEncoder. Also now
declaring PMT in NewEncoder so that we can set streamID correctly based on mediaType.
2019-05-16 13:57:10 +09:30
Saxon 8081fd48a0 container/mts/mpegts.go: fixed conflict with master 2019-05-13 17:07:53 +09:30
Saxon Milton 466552cbf9 Merged in mpegts-testing (pull request )
container/mts: testing for mpegts.go and encoder.go

Approved-by: Alan Noble <anoble@gmail.com>
2019-05-13 07:09:08 +00:00
Saxon 51f4d123bf container/mts: using MPEG-TS in comments rather than MPEGTS or mpegts 2019-05-11 21:14:28 +09:30
Saxon 1ab6ab116a container/mts/encoder.go: fixed comment for PTSFrequency const. 2019-05-11 16:33:09 +09:30
Saxon aa5a089c55 container/mts/encoder.go: fixed comment for time-related constants 2019-05-11 16:32:00 +09:30
Saxon 20a5ed5362 container/mts/mpegts.go: renamed pidType to pid in GetPTSRange 2019-05-11 16:30:29 +09:30
Saxon 5652b05c21 container/mts/mpegts.go: added package level doc comment 2019-05-11 16:29:15 +09:30
Saxon 0d3463ac87 container/mts: update comments for PCRFrequency and PTSFrequency 2019-05-11 13:57:02 +09:30
Saxon 8f8ae7c558 container/mts: using uint16 for PID always 2019-05-11 13:50:40 +09:30
Saxon 04c7825063 container/mts: PCRFreq->PCRFrequency and PTSFreq->PTSFrequency 2019-05-11 13:48:32 +09:30
Saxon ebb69ea6aa container/mts/mpegts.go: GetPTSRange now generalised for any PID 2019-05-11 13:04:30 +09:30
Saxon e2d9853264 container/mts: fixed build error 2019-05-11 12:49:31 +09:30
Saxon 594dca1b21 container/mts/encoder.go: export PTS frequency. 2019-05-11 12:46:31 +09:30
Saxon 62844809f2 container/mts/mpegts_test.go: writePSI and writeFrame take bytes.Buffer pointer now 2019-05-10 17:47:48 +09:30
Saxon b12a78dad2 container/mts/mpegts.go: corrected comment 2019-05-10 17:45:04 +09:30
Saxon 5179cdaceb container/mts/mpegts_test.go: wrote some helper functions for writing psi and frames and cleaned up commenting 2019-05-10 17:38:22 +09:30
Saxon a86a3fa88a container/mts/mpegts_test.go: added testing file for mpegts.go
Added testing file for mpegts_test.go and added test for GetPTSRange().
2019-05-10 17:22:14 +09:30
Saxon 542f017879 container/mts/pes/pes.go: simplified insertion of pts into pes []byte using comcast/gots InsertPTS func 2019-05-10 14:51:53 +09:30
Saxon 868d01527c container/mts/mpegts.go: wrote GetPTSRange func
This func will return the first and last PTS from an MPEGTS clip by finding the first access unit, and then by moving backward from the end of the clip to find the start of the final PES packet.
2019-05-10 14:20:14 +09:30