libcaption
ts.h
Go to the documentation of this file.
1 /**********************************************************************************************/
2 /* The MIT License */
3 /* */
4 /* Copyright 2016-2017 Twitch Interactive, Inc. or its affiliates. All Rights Reserved. */
5 /* */
6 /* Permission is hereby granted, free of charge, to any person obtaining a copy */
7 /* of this software and associated documentation files (the "Software"), to deal */
8 /* in the Software without restriction, including without limitation the rights */
9 /* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell */
10 /* copies of the Software, and to permit persons to whom the Software is */
11 /* furnished to do so, subject to the following conditions: */
12 /* */
13 /* The above copyright notice and this permission notice shall be included in */
14 /* all copies or substantial portions of the Software. */
15 /* */
16 /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR */
17 /* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, */
18 /* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE */
19 /* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER */
20 /* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, */
21 /* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN */
22 /* THE SOFTWARE. */
23 /**********************************************************************************************/
24 #ifndef LIBCAPTION_TS_H
25 #define LIBCAPTION_TS_H
26 #include "caption.h"
27 #include "mpeg.h"
28 
29 typedef struct {
30  int16_t pmtpid;
31  int16_t ccpid;
32  int16_t stream_type;
33  int64_t pts;
34  int64_t dts;
35  size_t size;
36  const uint8_t* data;
37 } ts_t;
38 
44 #define TS_PACKET_SIZE 188
45 void ts_init(ts_t* ts);
46 int ts_parse_packet(ts_t* ts, const uint8_t* data);
47 // return timestamp in seconds
48 static inline double ts_dts_seconds(ts_t* ts) { return ts->dts / 90000.0; }
49 static inline double ts_pts_seconds(ts_t* ts) { return ts->pts / 90000.0; }
50 static inline double ts_cts_seconds(ts_t* ts) { return (ts->pts - ts->dts) / 90000.0; }
51 
52 #endif
static double ts_dts_seconds(ts_t *ts)
Definition: ts.h:48
int16_t stream_type
Definition: ts.h:32
int64_t dts
Definition: ts.h:34
Definition: ts.h:29
int64_t pts
Definition: ts.h:33
static double ts_cts_seconds(ts_t *ts)
Definition: ts.h:50
int16_t pmtpid
Definition: ts.h:30
int ts_parse_packet(ts_t *ts, const uint8_t *data)
Definition: ts.c:45
size_t size
Definition: ts.h:35
int16_t ccpid
Definition: ts.h:31
const uint8_t * data
Definition: ts.h:36
static double ts_pts_seconds(ts_t *ts)
Definition: ts.h:49
void ts_init(ts_t *ts)
Definition: ts.c:28