Go to the documentation of this file.
7 #if !defined(NESTEGG_671cac2a_365d_ed69_d7a3_4491d3538d79)
8 #define NESTEGG_671cac2a_365d_ed69_d7a3_4491d3538d79
13 #if defined(__cplusplus)
66 #define NESTEGG_TRACK_VIDEO 0
67 #define NESTEGG_TRACK_AUDIO 1
68 #define NESTEGG_TRACK_UNKNOWN INT_MAX
70 #define NESTEGG_CODEC_VP8 0
71 #define NESTEGG_CODEC_VORBIS 1
72 #define NESTEGG_CODEC_VP9 2
73 #define NESTEGG_CODEC_OPUS 3
74 #define NESTEGG_CODEC_AV1 4
75 #define NESTEGG_CODEC_UNKNOWN INT_MAX
77 #define NESTEGG_VIDEO_MONO 0
78 #define NESTEGG_VIDEO_STEREO_LEFT_RIGHT 1
79 #define NESTEGG_VIDEO_STEREO_BOTTOM_TOP 2
80 #define NESTEGG_VIDEO_STEREO_TOP_BOTTOM 3
81 #define NESTEGG_VIDEO_STEREO_RIGHT_LEFT 11
83 #define NESTEGG_SEEK_SET 0
84 #define NESTEGG_SEEK_CUR 1
85 #define NESTEGG_SEEK_END 2
87 #define NESTEGG_LOG_DEBUG 1
88 #define NESTEGG_LOG_INFO 10
89 #define NESTEGG_LOG_WARNING 100
90 #define NESTEGG_LOG_ERROR 1000
91 #define NESTEGG_LOG_CRITICAL 10000
93 #define NESTEGG_ENCODING_COMPRESSION 0
94 #define NESTEGG_ENCODING_ENCRYPTION 1
96 #define NESTEGG_PACKET_HAS_SIGNAL_BYTE_FALSE 0
97 #define NESTEGG_PACKET_HAS_SIGNAL_BYTE_UNENCRYPTED 1
98 #define NESTEGG_PACKET_HAS_SIGNAL_BYTE_ENCRYPTED 2
99 #define NESTEGG_PACKET_HAS_SIGNAL_BYTE_PARTITIONED 4
101 #define NESTEGG_PACKET_HAS_KEYFRAME_FALSE 0
102 #define NESTEGG_PACKET_HAS_KEYFRAME_TRUE 1
103 #define NESTEGG_PACKET_HAS_KEYFRAME_UNKNOWN 2
105 typedef struct nestegg nestegg;
106 typedef struct nestegg_packet nestegg_packet;
117 int (* read)(
void * buffer,
size_t length,
void * userdata);
126 int (* seek)(int64_t offset,
int whence,
void * userdata);
132 int64_t (* tell)(
void * userdata);
216 int64_t max_offset, int64_t * start_pos,
217 int64_t * end_pos, uint64_t * tstamp);
268 unsigned int * count);
281 unsigned char ** data,
size_t * length);
320 unsigned char const ** content_enc_key_id,
321 size_t * content_enc_key_id_length);
331 uint64_t * duration);
399 unsigned char ** data,
size_t * length);
412 unsigned char ** data,
size_t * length);
420 int64_t * discard_padding);
456 uint32_t
const ** partition_offsets,
457 uint8_t * num_offsets);
465 int64_t * reference_block);
478 int nestegg_sniff(
unsigned char const * buffer,
size_t length);
480 #if defined(__cplusplus)
Parameters specific to a video track.
Definition: nestegg.h:139
int nestegg_track_codec_id(nestegg *context, unsigned int track)
Query the codec ID specified by track.
unsigned int height
Height of the video frame in pixels.
Definition: nestegg.h:145
unsigned int depth
Bits per sample.
Definition: nestegg.h:159
int nestegg_read_reset(nestegg *context)
Reset parser state to the last valid state before nestegg_read_packet failed.
int nestegg_track_video_params(nestegg *context, unsigned int track, nestegg_video_params *params)
Query the video parameters specified by track.
int nestegg_packet_data(nestegg_packet *packet, unsigned int item, unsigned char **data, size_t *length)
Get a pointer to chunk number item of packet data.
struct nestegg nestegg
Opaque handle referencing the stream state.
Definition: nestegg.h:105
struct nestegg_packet nestegg_packet
Opaque handle referencing a packet of data.
Definition: nestegg.h:106
int nestegg_track_count(nestegg *context, unsigned int *tracks)
Query the number of tracks in the media stream.
int nestegg_track_codec_data_count(nestegg *context, unsigned int track, unsigned int *count)
Query the number of codec initialization chunks for track.
int nestegg_sniff(unsigned char const *buffer, size_t length)
Try to determine if the buffer looks like the beginning of a WebM file.
unsigned int display_width
Display width of the video frame in pixels.
Definition: nestegg.h:146
int nestegg_track_content_enc_key_id(nestegg *context, unsigned int track, unsigned char const **content_enc_key_id, size_t *content_enc_key_id_length)
Query the ContentEncKeyId for track.
unsigned int crop_right
Pixels to crop from the right of the frame.
Definition: nestegg.h:151
uint64_t seek_preroll
Nanoseconds that must be discarded after a seek.
Definition: nestegg.h:161
int nestegg_track_codec_data(nestegg *context, unsigned int track, unsigned int item, unsigned char **data, size_t *length)
Get a pointer to chunk number item of codec initialization data for track.
int nestegg_packet_tstamp(nestegg_packet *packet, uint64_t *tstamp)
Query the timestamp in nanoseconds of packet.
int nestegg_get_cue_point(nestegg *context, unsigned int cluster_num, int64_t max_offset, int64_t *start_pos, int64_t *end_pos, uint64_t *tstamp)
Query the start and end offset for a particular cluster.
unsigned int stereo_mode
Video mode.
Definition: nestegg.h:140
int nestegg_packet_track(nestegg_packet *packet, unsigned int *track)
Query the track number of packet.
int nestegg_packet_count(nestegg_packet *packet, unsigned int *count)
Query the number of data chunks contained in packet.
uint64_t codec_delay
Nanoseconds that must be discarded from the start.
Definition: nestegg.h:160
unsigned int channels
Number of audio channels.
Definition: nestegg.h:158
int nestegg_track_seek(nestegg *context, unsigned int track, uint64_t tstamp)
Seek track to tstamp.
void * userdata
User supplied pointer to be passed to the IO callbacks.
Definition: nestegg.h:135
int nestegg_packet_encryption(nestegg_packet *packet)
Query if a packet is encrypted.
int nestegg_packet_offsets(nestegg_packet *packet, uint32_t const **partition_offsets, uint8_t *num_offsets)
Query the packet for offsets.
int nestegg_tstamp_scale(nestegg *context, uint64_t *scale)
Query the tstamp scale of the media stream in nanoseconds.
int nestegg_packet_additional_data(nestegg_packet *packet, unsigned int id, unsigned char **data, size_t *length)
Get a pointer to additional data with identifier id of additional packet data.
int nestegg_track_type(nestegg *context, unsigned int track)
Query the type specified by track.
void nestegg_destroy(nestegg *context)
Destroy a nestegg context and free associated memory.
void(* nestegg_log)(nestegg *context, unsigned int severity, char const *format,...)
Logging callback function pointer.
Definition: nestegg.h:165
void nestegg_free_packet(nestegg_packet *packet)
Destroy a nestegg_packet and free associated memory.
int nestegg_packet_duration(nestegg_packet *packet, uint64_t *duration)
Query the duration in nanoseconds of packet.
User supplied IO context.
Definition: nestegg.h:109
int nestegg_packet_reference_block(nestegg_packet *packet, int64_t *reference_block)
Returns reference_block given packet.
unsigned int display_height
Display height of the video frame in pixels.
Definition: nestegg.h:147
int nestegg_offset_seek(nestegg *context, uint64_t offset)
Seek to offset.
int nestegg_duration(nestegg *context, uint64_t *duration)
Query the duration of the media stream in nanoseconds.
int nestegg_packet_iv(nestegg_packet *packet, unsigned char const **iv, size_t *length)
Query the IV for an encrypted packet.
int nestegg_has_cues(nestegg *context)
Query the presence of cues.
unsigned int width
Width of the video frame in pixels.
Definition: nestegg.h:144
int nestegg_track_encoding(nestegg *context, unsigned int track)
Query the encoding status for track.
int nestegg_init(nestegg **context, nestegg_io io, nestegg_log callback, int64_t max_offset)
Initialize a nestegg context.
unsigned int crop_top
Pixels to crop from the top of the frame.
Definition: nestegg.h:149
unsigned int crop_bottom
Pixels to crop from the bottom of the frame.
Definition: nestegg.h:148
int nestegg_track_audio_params(nestegg *context, unsigned int track, nestegg_audio_params *params)
Query the audio parameters specified by track.
int nestegg_read_packet(nestegg *context, nestegg_packet **packet)
Read a packet of media data.
int nestegg_track_default_duration(nestegg *context, unsigned int track, uint64_t *duration)
Query the default frame duration for track.
unsigned int crop_left
Pixels to crop from the left of the frame.
Definition: nestegg.h:150
unsigned int alpha_mode
1 if an additional opacity stream is available, otherwise 0.
Definition: nestegg.h:152
double rate
Sampling rate in Hz.
Definition: nestegg.h:157
int nestegg_packet_has_keyframe(nestegg_packet *packet)
Query the keyframe status for a given packet.
int nestegg_packet_discard_padding(nestegg_packet *packet, int64_t *discard_padding)
Returns discard_padding for given packet.
Parameters specific to an audio track.
Definition: nestegg.h:156