/usr/include/gpac/sync_layer.h is in libgpac-dev 0.4.5+svn3462~dfsg0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | /*
* GPAC - Multimedia Framework C SDK
*
* Copyright (c) Jean Le Feuvre 2000-2005
* All rights reserved
*
* This file is part of GPAC / SL header file
*
* GPAC is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* GPAC 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; see the file COPYING. If not, write to
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
#ifndef _GF_SYNC_LAYER_H_
#define _GF_SYNC_LAYER_H_
#ifdef __cplusplus
extern "C" {
#endif
/*the Sync Layer config descriptor*/
typedef struct
{
/*base descriptor*/
u8 tag;
u8 predefined;
u8 useAccessUnitStartFlag;
u8 useAccessUnitEndFlag;
u8 useRandomAccessPointFlag;
u8 hasRandomAccessUnitsOnlyFlag;
u8 usePaddingFlag;
u8 useTimestampsFlag;
u8 useIdleFlag;
u8 durationFlag;
u32 timestampResolution;
u32 OCRResolution;
u8 timestampLength;
u8 OCRLength;
u8 AULength;
u8 instantBitrateLength;
u8 degradationPriorityLength;
u8 AUSeqNumLength;
u8 packetSeqNumLength;
u32 timeScale;
u16 AUDuration;
u16 CUDuration;
u64 startDTS;
u64 startCTS;
} GF_SLConfig;
/***************************************
SLConfig Tag
***************************************/
enum
{
SLPredef_Null = 0x01,
SLPredef_MP4 = 0x02,
/*intern to GPAC, means NO SL at all (for streams unable to handle AU reconstruction a timing)*/
SLPredef_SkipSL = 0xF0
};
/*set SL predefined (assign all fields according to sl->predefined value)*/
GF_Err gf_odf_slc_set_pref(GF_SLConfig *sl);
typedef struct
{
u8 accessUnitStartFlag;
u8 accessUnitEndFlag;
u8 paddingFlag;
u8 randomAccessPointFlag;
u8 OCRflag;
u8 idleFlag;
u8 decodingTimeStampFlag;
u8 compositionTimeStampFlag;
u8 instantBitrateFlag;
u8 degradationPriorityFlag;
u8 paddingBits;
u16 packetSequenceNumber;
u64 objectClockReference;
u16 AU_sequenceNumber;
u64 decodingTimeStamp;
u64 compositionTimeStamp;
u16 accessUnitLength;
u32 instantBitrate;
u16 degradationPriority;
/*this is NOT part of standard SL, only used internally: signals duration of access unit if known
this is usefull for streams with very random updates, to prevent buffering for instance a subtitle stream
which is likely to have no updates during the first minutes... expressed in media timescale*/
u32 au_duration;
/*ISMACryp extensions*/
u8 isma_encrypted;
u64 isma_BSO;
/*version_number are pushed from m2ts sections to the mpeg4sl layer so as to handle mpeg4 stream dependencies*/
u8 m2ts_version_number_plus_one;
u8 m2ts_pcr;
} GF_SLHeader;
/*packetize SL-PDU. If PDU is NULL or size 0, only writes the SL header*/
void gf_sl_packetize(GF_SLConfig* slConfig, GF_SLHeader *Header, char *PDU, u32 size, char **outPacket, u32 *OutSize);
/*gets SL header size in bytes*/
u32 gf_sl_get_header_size(GF_SLConfig* slConfig, GF_SLHeader *Header);
/*depacketize SL-PDU*/
void gf_sl_depacketize(GF_SLConfig *slConfig, GF_SLHeader *Header, const char *PDU, u32 PDULength, u32 *HeaderLen);
#ifdef __cplusplus
}
#endif
#endif /*_GF_SYNC_LAYER_H_*/
|