/usr/include/gpac/term_info.h is in libgpac-dev 0.5.2-426-gc5ad4e4+dfsg5-3.
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 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 | /*
* GPAC - Multimedia Framework C SDK
*
* Authors: Jean Le Feuvre
* Copyright (c) Telecom ParisTech 2000-2012
* All rights reserved
*
* This file is part of GPAC / Stream Management sub-project
*
* 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_TERM_INFO_H_
#define _GF_TERM_INFO_H_
#ifdef __cplusplus
extern "C" {
#endif
/*
OD Browsing API - YOU MUST INCLUDE <gpac/terminal.h> before
(this has been separated from terminal.h to limit dependency of core to mpeg4_odf.h header)
ALL ITEMS ARE READ-ONLY AND SHALL NOT BE MODIFIED
*/
#include <gpac/mpeg4_odf.h>
/*returns top-level OD of the presentation*/
GF_ObjectManager *gf_term_get_root_object(GF_Terminal *term);
/*returns number of sub-ODs in the current root. scene_od must be an inline OD*/
u32 gf_term_get_object_count(GF_Terminal *term, GF_ObjectManager *scene_od);
/*returns indexed (0-based) OD manager in the scene*/
GF_ObjectManager *gf_term_get_object(GF_Terminal *term, GF_ObjectManager *scene_od, u32 index);
/*return values:
0: regular media object, not inline
1: root scene
2: inline scene
3: externProto library
*/
u32 gf_term_object_subscene_type(GF_Terminal *term, GF_ObjectManager *odm);
/*select given object when stream selection is available*/
void gf_term_select_object(GF_Terminal *term, GF_ObjectManager *odm);
/*select service by given ID for multiplexed services (MPEG-2 TS)*/
void gf_term_select_service(GF_Terminal *term, GF_ObjectManager *odm, u32 service_id);
/*sets addon on or off (only one addon possible for now). When OFF , the associated service is shut down*/
void gf_term_toggle_addons(GF_Terminal *term, Bool show_addons);
typedef struct
{
GF_ObjectDescriptor *od;
Double duration;
Double current_time;
/*0: stopped, 1: playing, 2: paused, 3: not setup, 4; setup failed.*/
u32 status;
/*if set, the PL flags are valid*/
Bool has_profiles;
Bool inline_pl;
u8 OD_pl;
u8 scene_pl;
u8 audio_pl;
u8 visual_pl;
u8 graphics_pl;
Bool raw_media;
Bool generated_scene;
/*name of module handling the service service */
const char *service_handler;
/*name of service*/
const char *service_url;
/*set if the service is owned by this object*/
Bool owns_service;
/*stream buffer:
-2: stream is not playing
-1: stream has no buffering
>=0: amount of media data present in buffer, in ms
*/
s32 buffer;
u32 min_buffer, max_buffer;
/*number of AUs in DB (cumulated on all input channels)*/
u32 db_unit_count;
/*number of CUs in composition memory (if any) and CM capacity*/
u16 cb_unit_count, cb_max_count;
/*inidciate that thye composition memory is bypassed for this decoder (video only) */
Bool direct_video_memory;
/*clock drift in ms of object clock: this is the delay set by the audio renderer to keep AV in sync*/
s32 clock_drift;
/*codec name*/
const char *codec_name;
/*object type - match streamType (cf constants.h)*/
u32 od_type;
/*audio properties*/
u32 sample_rate, bits_per_sample, num_channels;
/*video properties (w & h also used for scene codecs)*/
u32 width, height, pixelFormat, par;
/*average birate over last second and max bitrate over one second at decoder input - expressed in bits per sec*/
u32 avg_bitrate, instant_bitrate, max_bitrate;
u32 nb_dec_frames, nb_dropped;
u32 first_frame_time, last_frame_time;
u64 total_dec_time, irap_total_dec_time;
u32 max_dec_time, irap_max_dec_time;
u32 au_duration;
u32 nb_iraps;
s32 ntp_diff;
/*set if ISMACryp present on the object - will need refinement for IPMPX...
0: not protected - 1: protected and OK - 2: protected and DRM failed*/
u32 protection;
u32 lang;
/*name of media if not defined in OD framework*/
const char *media_url;
} GF_MediaInfo;
/*fills the GF_MediaInfo structure describing the OD manager*/
GF_Err gf_term_get_object_info(GF_Terminal *term, GF_ObjectManager *odm, GF_MediaInfo *info);
/*gets current downloads info for the service - only use if ODM owns thesrevice, returns 0 otherwise.
@d_enum: in/out current enum - shall start to 0, incremented at each call. fct returns 0 if no more
downloads
@server: server name
@path: file/data location on server
@bytes_done, @total_bytes: file info. total_bytes may be 0 (eg http streaming)
@bytes_per_sec: guess what
*/
Bool gf_term_get_download_info(GF_Terminal *term, GF_ObjectManager *odm, u32 *d_enum, const char **server, const char **path, u32 *bytes_done, u32 *total_bytes, u32 *bytes_per_sec);
/*same principles as above , struct __netcom is defined in service.h*/
typedef struct __netstatcom NetStatCommand;
Bool gf_term_get_channel_net_info(GF_Terminal *term, GF_ObjectManager *odm, u32 *d_enum, u32 *chid, NetStatCommand *netcom, GF_Err *ret_code);
/*same principles as above , struct __netinfo is defined in service.h*/
typedef struct __netinfocom NetInfoCommand;
GF_Err gf_term_get_service_info(GF_Terminal *term, GF_ObjectManager *odm, NetInfoCommand *netcom);
/*retrieves world info of the scene @od belongs to.
If @odm is or points to an inlined OD the world info of the inlined content is retrieved
If @odm is NULL the world info of the main scene is retrieved
returns NULL if no WorldInfo available
returns world title if available
@descriptions: any textual descriptions is stored here
strings are not allocated
*/
const char *gf_term_get_world_info(GF_Terminal *term, GF_ObjectManager *scene_od, GF_List *descriptions);
/*dumps scene graph in specified file, in BT or XMT format
@rad_name: file radical (NULL for stdout) - if not NULL MUST BE GF_MAX_PATH length
@filename [out]: if not null, returns the complete filename (rad + ext); MUST BE FREED BY THE CALLER
if @skip_proto is set proto declarations are not dumped
If @odm is or points to an inlined OD the inlined scene is dumped
If @odm is NULL the main scene is dumped
*/
GF_Err gf_term_dump_scene(GF_Terminal *term, char *rad_name, char **filename, Bool xml_dump, Bool skip_proto, GF_ObjectManager *odm);
#ifdef __cplusplus
}
#endif
#endif /*_GF_TERM_INFO_H_*/
|