| audio_decoder.h | | audio_decoder.h | |
| | | | |
| skipping to change at line 48 | | skipping to change at line 48 | |
| */ | | */ | |
| | | | |
| typedef struct audio_decoder_class_s audio_decoder_class_t; | | typedef struct audio_decoder_class_s audio_decoder_class_t; | |
| typedef struct audio_decoder_s audio_decoder_t; | | typedef struct audio_decoder_s audio_decoder_t; | |
| | | | |
| struct audio_decoder_class_s { | | struct audio_decoder_class_s { | |
| | | | |
| /* | | /* | |
| * open a new instance of this plugin class | | * open a new instance of this plugin class | |
| */ | | */ | |
|
| audio_decoder_t* (*open_plugin) (audio_decoder_class_t *c_this, xine_stre
am_t *stream); | | audio_decoder_t* (*open_plugin) (audio_decoder_class_t *this, xine_stream
_t *stream); | |
| | | | |
| /* | | /* | |
| * return short, human readable identifier for this plugin class | | * return short, human readable identifier for this plugin class | |
| */ | | */ | |
|
| char* (*get_identifier) (audio_decoder_class_t *c_this); | | char* (*get_identifier) (audio_decoder_class_t *this); | |
| | | | |
| /* | | /* | |
| * return human readable (verbose = 1 line) description for | | * return human readable (verbose = 1 line) description for | |
| * this plugin class | | * this plugin class | |
| */ | | */ | |
|
| char* (*get_description) (audio_decoder_class_t *c_this); | | char* (*get_description) (audio_decoder_class_t *this); | |
| | | | |
| /* | | /* | |
| * free all class-related resources | | * free all class-related resources | |
| */ | | */ | |
| | | | |
|
| void (*dispose) (audio_decoder_class_t *c_this); | | void (*dispose) (audio_decoder_class_t *this); | |
| }; | | }; | |
| | | | |
| struct audio_decoder_s { | | struct audio_decoder_s { | |
| | | | |
| /* | | /* | |
| * decode data from buf and feed decoded samples to | | * decode data from buf and feed decoded samples to | |
| * audio output | | * audio output | |
| */ | | */ | |
|
| void (*decode_data) (audio_decoder_t *c_this, buf_element_t *buf); | | void (*decode_data) (audio_decoder_t *this, buf_element_t *buf); | |
| | | | |
| /* | | /* | |
| * reset decoder after engine flush (prepare for new | | * reset decoder after engine flush (prepare for new | |
| * audio data not related to recently decoded data) | | * audio data not related to recently decoded data) | |
| */ | | */ | |
|
| void (*reset) (audio_decoder_t *c_this); | | void (*reset) (audio_decoder_t *this); | |
| | | | |
| /* | | /* | |
| * inform decoder that a time reference discontinuity has happened. | | * inform decoder that a time reference discontinuity has happened. | |
| * that is, it must forget any currently held pts value | | * that is, it must forget any currently held pts value | |
| */ | | */ | |
|
| void (*discontinuity) (audio_decoder_t *c_this); | | void (*discontinuity) (audio_decoder_t *this); | |
| | | | |
| /* | | /* | |
| * close down, free all resources | | * close down, free all resources | |
| */ | | */ | |
|
| void (*dispose) (audio_decoder_t *c_this); | | void (*dispose) (audio_decoder_t *this); | |
| | | | |
| void *node; /* used by plugin loader */ | | void *node; /* used by plugin loader */ | |
| | | | |
| }; | | }; | |
| | | | |
| #endif | | #endif | |
| | | | |
End of changes. 8 change blocks. |
| 8 lines changed or deleted | | 8 lines changed or added | |
|
| demux.h | | demux.h | |
| | | | |
| skipping to change at line 54 | | skipping to change at line 54 | |
| #define METHOD_EXPLICIT 3 | | #define METHOD_EXPLICIT 3 | |
| | | | |
| typedef struct demux_class_s demux_class_t ; | | typedef struct demux_class_s demux_class_t ; | |
| typedef struct demux_plugin_s demux_plugin_t; | | typedef struct demux_plugin_s demux_plugin_t; | |
| | | | |
| struct demux_class_s { | | struct demux_class_s { | |
| | | | |
| /* | | /* | |
| * open a new instance of this plugin class | | * open a new instance of this plugin class | |
| */ | | */ | |
|
| demux_plugin_t* (*open_plugin) (demux_class_t *c_this, xine_stream_t *str
eam, input_plugin_t *input); | | demux_plugin_t* (*open_plugin) (demux_class_t *this, xine_stream_t *strea
m, input_plugin_t *input); | |
| | | | |
| /* | | /* | |
| * return human readable (verbose = 1 line) description for this plugin | | * return human readable (verbose = 1 line) description for this plugin | |
| */ | | */ | |
|
| const char* (*get_description) (demux_class_t *c_this); | | const char* (*get_description) (demux_class_t *this); | |
| | | | |
| /* | | /* | |
| * return human readable identifier for this plugin | | * return human readable identifier for this plugin | |
| */ | | */ | |
| | | | |
|
| const char* (*get_identifier) (demux_class_t *c_this); | | const char* (*get_identifier) (demux_class_t *this); | |
| | | | |
| /* | | /* | |
| * return MIME types supported for this plugin | | * return MIME types supported for this plugin | |
| */ | | */ | |
| | | | |
|
| const char* (*get_mimetypes) (demux_class_t *c_this); | | const char* (*get_mimetypes) (demux_class_t *this); | |
| | | | |
| /* | | /* | |
| * return ' ' seperated list of file extensions this | | * return ' ' seperated list of file extensions this | |
| * demuxer is likely to handle | | * demuxer is likely to handle | |
| * (will be used to filter media files in | | * (will be used to filter media files in | |
| * file selection dialogs) | | * file selection dialogs) | |
| */ | | */ | |
| | | | |
|
| const char* (*get_extensions) (demux_class_t *c_this); | | const char* (*get_extensions) (demux_class_t *this); | |
| | | | |
| /* | | /* | |
| * close down, free all resources | | * close down, free all resources | |
| */ | | */ | |
|
| void (*dispose) (demux_class_t *c_this); | | void (*dispose) (demux_class_t *this); | |
| }; | | }; | |
| | | | |
| /* | | /* | |
| * any demux plugin must implement these functions | | * any demux plugin must implement these functions | |
| */ | | */ | |
| | | | |
| struct demux_plugin_s { | | struct demux_plugin_s { | |
| | | | |
| /* | | /* | |
| * send headers, followed by BUF_CONTROL_HEADERS_DONE down the | | * send headers, followed by BUF_CONTROL_HEADERS_DONE down the | |
| * fifos, then return. do not start demux thread (yet) | | * fifos, then return. do not start demux thread (yet) | |
| */ | | */ | |
| | | | |
|
| void (*send_headers) (demux_plugin_t *c_this); | | void (*send_headers) (demux_plugin_t *this); | |
| | | | |
| /* | | /* | |
| * ask demux to seek | | * ask demux to seek | |
| * | | * | |
| * for seekable streams, a start position can be specified | | * for seekable streams, a start position can be specified | |
| * | | * | |
| * start_pos : position in input source (0..65535) | | * start_pos : position in input source (0..65535) | |
| * this is defined as most convenient to demuxer, can be | | * this is defined as most convenient to demuxer, can be | |
| * either time or offset based. | | * either time or offset based. | |
| * start_time : position measured in miliseconds from stream start | | * start_time : position measured in miliseconds from stream start | |
| * playing : true if this is a new seek within an already playing stream | | * playing : true if this is a new seek within an already playing stream | |
| * false if playback of this stream has not started yet | | * false if playback of this stream has not started yet | |
| * | | * | |
| * if both parameters are !=0 start_pos will be used | | * if both parameters are !=0 start_pos will be used | |
| * for non-seekable streams both values will be ignored | | * for non-seekable streams both values will be ignored | |
| * | | * | |
| * returns the demux status (like get_status, but immediately after | | * returns the demux status (like get_status, but immediately after | |
| * starting the demuxer) | | * starting the demuxer) | |
| */ | | */ | |
| | | | |
|
| int (*seek) (demux_plugin_t *c_this, | | int (*seek) (demux_plugin_t *this, | |
| off_t start_pos, int start_time, int playing ); | | off_t start_pos, int start_time, int playing ); | |
| | | | |
| /* | | /* | |
| * send a chunk of data down to decoder fifos | | * send a chunk of data down to decoder fifos | |
| * | | * | |
| * the meaning of "chunk" is specific to every demux, usually | | * the meaning of "chunk" is specific to every demux, usually | |
| * it involves parsing one unit of data from stream. | | * it involves parsing one unit of data from stream. | |
| * | | * | |
| * this function will be called from demux loop and should return | | * this function will be called from demux loop and should return | |
| * the demux current status | | * the demux current status | |
| */ | | */ | |
| | | | |
|
| int (*send_chunk) (demux_plugin_t *c_this); | | int (*send_chunk) (demux_plugin_t *this); | |
| | | | |
| /* | | /* | |
| * free resources | | * free resources | |
| */ | | */ | |
| | | | |
|
| void (*dispose) (demux_plugin_t *c_this) ; | | void (*dispose) (demux_plugin_t *this) ; | |
| | | | |
| /* | | /* | |
| * returns DEMUX_OK or DEMUX_FINISHED | | * returns DEMUX_OK or DEMUX_FINISHED | |
| */ | | */ | |
| | | | |
|
| int (*get_status) (demux_plugin_t *c_this) ; | | int (*get_status) (demux_plugin_t *this) ; | |
| | | | |
| /* | | /* | |
| * gets stream length in miliseconds (might be estimated) | | * gets stream length in miliseconds (might be estimated) | |
| * may return 0 for non-seekable streams | | * may return 0 for non-seekable streams | |
| */ | | */ | |
| | | | |
|
| int (*get_stream_length) (demux_plugin_t *c_this); | | int (*get_stream_length) (demux_plugin_t *this); | |
| | | | |
| /* | | /* | |
| * return capabilities of demuxed stream | | * return capabilities of demuxed stream | |
| */ | | */ | |
| | | | |
|
| uint32_t (*get_capabilities) (demux_plugin_t *c_this); | | uint32_t (*get_capabilities) (demux_plugin_t *this); | |
| | | | |
| /* | | /* | |
| * request optional data from input plugin. | | * request optional data from input plugin. | |
| */ | | */ | |
|
| int (*get_optional_data) (demux_plugin_t *c_this, void *data, int data_ty
pe); | | int (*get_optional_data) (demux_plugin_t *this, void *data, int data_type
); | |
| | | | |
| /* | | /* | |
| * "backwards" link to plugin class | | * "backwards" link to plugin class | |
| */ | | */ | |
| | | | |
| demux_class_t *demux_class; | | demux_class_t *demux_class; | |
| | | | |
| void *node; /* used by plugin loader */ | | void *node; /* used by plugin loader */ | |
| | | | |
| } ; | | } ; | |
| | | | |
End of changes. 14 change blocks. |
| 14 lines changed or deleted | | 14 lines changed or added | |
|
| input_plugin.h | | input_plugin.h | |
| | | | |
| skipping to change at line 49 | | skipping to change at line 49 | |
| | | | |
| typedef struct input_class_s input_class_t ; | | typedef struct input_class_s input_class_t ; | |
| typedef struct input_plugin_s input_plugin_t; | | typedef struct input_plugin_s input_plugin_t; | |
| | | | |
| struct input_class_s { | | struct input_class_s { | |
| | | | |
| /* | | /* | |
| * create a new instance of this plugin class | | * create a new instance of this plugin class | |
| * return NULL if the plugin does'nt handle the given mrl | | * return NULL if the plugin does'nt handle the given mrl | |
| */ | | */ | |
|
| input_plugin_t* (*get_instance) (input_class_t *c_this, xine_stream_t *st
ream, const char *mrl); | | input_plugin_t* (*get_instance) (input_class_t *this, xine_stream_t *stre
am, const char *mrl); | |
| | | | |
| /* | | /* | |
| * return short, human readable identifier for this plugin class | | * return short, human readable identifier for this plugin class | |
| * The returned string should not be malloc'd as it is not freed. | | * The returned string should not be malloc'd as it is not freed. | |
| */ | | */ | |
|
| const char* (*get_identifier) (input_class_t *c_this); | | const char* (*get_identifier) (input_class_t *this); | |
| | | | |
| /* | | /* | |
| * return human readable (verbose = 1 line) description for | | * return human readable (verbose = 1 line) description for | |
| * this plugin class | | * this plugin class | |
| */ | | */ | |
|
| const char* (*get_description) (input_class_t *c_this); | | const char* (*get_description) (input_class_t *this); | |
| | | | |
| /* | | /* | |
| * ls function, optional: may be NULL | | * ls function, optional: may be NULL | |
| * return value: NULL => filename is a file, **char=> filename is a dir | | * return value: NULL => filename is a file, **char=> filename is a dir | |
| */ | | */ | |
|
| xine_mrl_t ** (*get_dir) (input_class_t *c_this, const char *filename, in
t *nFiles); | | xine_mrl_t ** (*get_dir) (input_class_t *this, const char *filename, int
*nFiles); | |
| | | | |
| /* | | /* | |
| * generate autoplay list, optional: may be NULL | | * generate autoplay list, optional: may be NULL | |
| * return value: list of MRLs | | * return value: list of MRLs | |
| */ | | */ | |
|
| char ** (*get_autoplay_list) (input_class_t *c_this, int *num_files); | | char ** (*get_autoplay_list) (input_class_t *this, int *num_files); | |
| | | | |
| /* | | /* | |
| * close down, free all resources | | * close down, free all resources | |
| */ | | */ | |
|
| void (*dispose) (input_class_t *c_this); | | void (*dispose) (input_class_t *this); | |
| | | | |
| /* | | /* | |
| * eject/load the media (if possible), optional: may be NULL | | * eject/load the media (if possible), optional: may be NULL | |
| * | | * | |
| * returns 0 for temporary failures | | * returns 0 for temporary failures | |
| */ | | */ | |
|
| int (*eject_media) (input_class_t *c_this); | | int (*eject_media) (input_class_t *this); | |
| }; | | }; | |
| | | | |
| struct input_plugin_s { | | struct input_plugin_s { | |
| | | | |
| /* | | /* | |
| * open the stream | | * open the stream | |
| * return 0 if an error occured | | * return 0 if an error occured | |
| */ | | */ | |
|
| int (*open) (input_plugin_t *c_this); | | int (*open) (input_plugin_t *this); | |
| | | | |
| /* | | /* | |
| * return capabilities of the current playable entity. See | | * return capabilities of the current playable entity. See | |
| * get_current_pos below for a description of a "playable entity" | | * get_current_pos below for a description of a "playable entity" | |
| * Capabilities a created by "OR"ing a mask of constants listed | | * Capabilities a created by "OR"ing a mask of constants listed | |
| * below which start "INPUT_CAP". | | * below which start "INPUT_CAP". | |
| * | | * | |
| * depending on the values set, some of the functions below | | * depending on the values set, some of the functions below | |
| * will or will not get called or should (not) be able to | | * will or will not get called or should (not) be able to | |
| * do certain tasks. | | * do certain tasks. | |
| * | | * | |
| * for example if INPUT_CAP_SEEKABLE is set, | | * for example if INPUT_CAP_SEEKABLE is set, | |
| * the seek() function is expected to work fully at any time. | | * the seek() function is expected to work fully at any time. | |
| * however, if the flag is not set, the seek() function should | | * however, if the flag is not set, the seek() function should | |
| * make a best-effort attempt to seek, e.g. at least | | * make a best-effort attempt to seek, e.g. at least | |
| * relative forward seeking should work. | | * relative forward seeking should work. | |
| */ | | */ | |
|
| uint32_t (*get_capabilities) (input_plugin_t *c_this); | | uint32_t (*get_capabilities) (input_plugin_t *this); | |
| | | | |
| /* | | /* | |
| * read nlen bytes, return number of bytes read | | * read nlen bytes, return number of bytes read | |
| * Should block until some bytes available for read; | | * Should block until some bytes available for read; | |
| * a return value of 0 indicates no data available | | * a return value of 0 indicates no data available | |
| */ | | */ | |
|
| off_t (*read) (input_plugin_t *c_this, char *buf, off_t nlen); | | off_t (*read) (input_plugin_t *this, char *buf, off_t nlen); | |
| | | | |
| /* | | /* | |
| * read one block, return newly allocated block (or NULL on failure) | | * read one block, return newly allocated block (or NULL on failure) | |
| * for blocked input sources len must be == blocksize | | * for blocked input sources len must be == blocksize | |
| * the fifo parameter is only used to get access to the buffer_pool_alloc
function | | * the fifo parameter is only used to get access to the buffer_pool_alloc
function | |
| */ | | */ | |
|
| buf_element_t *(*read_block)(input_plugin_t *c_this, fifo_buffer_t *fifo,
off_t len); | | buf_element_t *(*read_block)(input_plugin_t *this, fifo_buffer_t *fifo, o
ff_t len); | |
| | | | |
| /* | | /* | |
| * seek position, return new position | | * seek position, return new position | |
| * | | * | |
| * if seeking failed, -1 is returned | | * if seeking failed, -1 is returned | |
| */ | | */ | |
|
| off_t (*seek) (input_plugin_t *c_this, off_t offset, int origin); | | off_t (*seek) (input_plugin_t *this, off_t offset, int origin); | |
| | | | |
| /* | | /* | |
| * seek to time position, return new position | | * seek to time position, return new position | |
| * time_offset is given in miliseconds | | * time_offset is given in miliseconds | |
| * | | * | |
| * if seeking failed, -1 is returned | | * if seeking failed, -1 is returned | |
| * | | * | |
| * note: only SEEK_SET (0) is currently supported as origin | | * note: only SEEK_SET (0) is currently supported as origin | |
| * note: may be NULL is not supported | | * note: may be NULL is not supported | |
| */ | | */ | |
|
| off_t (*seek_time) (input_plugin_t *c_this, int time_offset, int origin); | | off_t (*seek_time) (input_plugin_t *this, int time_offset, int origin); | |
| | | | |
| /* | | /* | |
| * get current position in stream. | | * get current position in stream. | |
| * | | * | |
| */ | | */ | |
|
| off_t (*get_current_pos) (input_plugin_t *c_this); | | off_t (*get_current_pos) (input_plugin_t *this); | |
| | | | |
| /* | | /* | |
| * get current time position in stream in miliseconds. | | * get current time position in stream in miliseconds. | |
| * | | * | |
| * note: may be NULL is not supported | | * note: may be NULL is not supported | |
| */ | | */ | |
|
| int (*get_current_time) (input_plugin_t *c_this); | | int (*get_current_time) (input_plugin_t *this); | |
| | | | |
| /* | | /* | |
| * return number of bytes in the next playable entity or -1 if the | | * return number of bytes in the next playable entity or -1 if the | |
| * input is unlimited, as would be the case in a network stream. | | * input is unlimited, as would be the case in a network stream. | |
| * | | * | |
| * A "playable entity" tends to be the entities listed in a playback | | * A "playable entity" tends to be the entities listed in a playback | |
| * list or the units on which playback control generally works on. | | * list or the units on which playback control generally works on. | |
| * It might be the number of bytes in a VCD "segment" or "track" (if | | * It might be the number of bytes in a VCD "segment" or "track" (if | |
| * the track has no "entry" subdivisions), or the number of bytes in | | * the track has no "entry" subdivisions), or the number of bytes in | |
| * a PS (Program Segment or "Chapter") of a DVD. If there are no | | * a PS (Program Segment or "Chapter") of a DVD. If there are no | |
| * subdivisions of the input medium and it is considered one | | * subdivisions of the input medium and it is considered one | |
| * indivisible entity, it would be the byte count of that entity; | | * indivisible entity, it would be the byte count of that entity; | |
| * for example, the length in bytes of an MPEG file. | | * for example, the length in bytes of an MPEG file. | |
| | | | |
| * This length information is used, for example when in setting the | | * This length information is used, for example when in setting the | |
| * absolute or relative play position or possibly calculating the | | * absolute or relative play position or possibly calculating the | |
| * bit rate. | | * bit rate. | |
| */ | | */ | |
|
| off_t (*get_length) (input_plugin_t *c_this); | | off_t (*get_length) (input_plugin_t *this); | |
| | | | |
| /* | | /* | |
| * return block size in bytes of next complete playable entity (if | | * return block size in bytes of next complete playable entity (if | |
| * supported, 0 otherwise). See the description above under | | * supported, 0 otherwise). See the description above under | |
| * get_length for a description of a "complete playable entity". | | * get_length for a description of a "complete playable entity". | |
| * | | * | |
| * this block size is only used for mpeg streams stored on | | * this block size is only used for mpeg streams stored on | |
| * a block oriented storage media, e.g. DVDs and VCDs, to speed | | * a block oriented storage media, e.g. DVDs and VCDs, to speed | |
| * up the demuxing process. only set this (and the INPUT_CAP_BLOCK | | * up the demuxing process. only set this (and the INPUT_CAP_BLOCK | |
| * flag) if this is the case for your input plugin. | | * flag) if this is the case for your input plugin. | |
| * | | * | |
| * make this function simply return 0 if unsure. | | * make this function simply return 0 if unsure. | |
| */ | | */ | |
| | | | |
|
| uint32_t (*get_blocksize) (input_plugin_t *c_this); | | uint32_t (*get_blocksize) (input_plugin_t *this); | |
| | | | |
| /* | | /* | |
| * return current MRL | | * return current MRL | |
| */ | | */ | |
|
| const char * (*get_mrl) (input_plugin_t *c_this); | | const char * (*get_mrl) (input_plugin_t *this); | |
| | | | |
| /* | | /* | |
| * request optional data from input plugin. | | * request optional data from input plugin. | |
| */ | | */ | |
|
| int (*get_optional_data) (input_plugin_t *c_this, void *data, int data_ty
pe); | | int (*get_optional_data) (input_plugin_t *this, void *data, int data_type
); | |
| | | | |
| /* | | /* | |
| * close stream, free instance resources | | * close stream, free instance resources | |
| */ | | */ | |
|
| void (*dispose) (input_plugin_t *c_this); | | void (*dispose) (input_plugin_t *this); | |
| | | | |
| /* | | /* | |
| * "backward" link to input plugin class struct | | * "backward" link to input plugin class struct | |
| */ | | */ | |
| | | | |
| input_class_t *input_class; | | input_class_t *input_class; | |
| | | | |
| void *node; /* used by plugin loader */ | | void *node; /* used by plugin loader */ | |
| | | | |
| }; | | }; | |
| | | | |
End of changes. 20 change blocks. |
| 20 lines changed or deleted | | 20 lines changed or added | |
|
| osd.h | | osd.h | |
| | | | |
| skipping to change at line 85 | | skipping to change at line 85 | |
| struct osd_renderer_s { | | struct osd_renderer_s { | |
| | | | |
| /* | | /* | |
| * open a new osd object. this will allocated an empty (all zero) drawing | | * open a new osd object. this will allocated an empty (all zero) drawing | |
| * area where graphic primitives may be used. | | * area where graphic primitives may be used. | |
| * It is ok to specify big width and height values. The render will keep | | * It is ok to specify big width and height values. The render will keep | |
| * track of the smallest changed area to not generate too big overlays. | | * track of the smallest changed area to not generate too big overlays. | |
| * A default palette is initialized (i sugest keeping color 0 as transpar
ent | | * A default palette is initialized (i sugest keeping color 0 as transpar
ent | |
| * for the sake of simplicity) | | * for the sake of simplicity) | |
| */ | | */ | |
|
| osd_object_t* (*new_object) (osd_renderer_t *c_this, int width, int heigh
t); | | osd_object_t* (*new_object) (osd_renderer_t *this, int width, int height)
; | |
| | | | |
| /* | | /* | |
| * free osd object | | * free osd object | |
| */ | | */ | |
| void (*free_object) (osd_object_t *osd_to_close); | | void (*free_object) (osd_object_t *osd_to_close); | |
| | | | |
| /* | | /* | |
| * send the osd to be displayed at given pts (0=now) | | * send the osd to be displayed at given pts (0=now) | |
| * the object is not changed. there may be subsequent drawing on it. | | * the object is not changed. there may be subsequent drawing on it. | |
| */ | | */ | |
| | | | |
| skipping to change at line 187 | | skipping to change at line 187 | |
| * get width and height of how text will be renderized | | * get width and height of how text will be renderized | |
| */ | | */ | |
| int (*get_text_size) (osd_object_t *osd, const char *text, | | int (*get_text_size) (osd_object_t *osd, const char *text, | |
| int *width, int *height); | | int *width, int *height); | |
| | | | |
| /* | | /* | |
| * close osd rendering engine | | * close osd rendering engine | |
| * loaded fonts are unloaded | | * loaded fonts are unloaded | |
| * osd objects are closed | | * osd objects are closed | |
| */ | | */ | |
|
| void (*close) (osd_renderer_t *c_this); | | void (*close) (osd_renderer_t *this); | |
| | | | |
| /* | | /* | |
| * clear an osd object (empty drawing area) | | * clear an osd object (empty drawing area) | |
| */ | | */ | |
| void (*clear) (osd_object_t *osd ); | | void (*clear) (osd_object_t *osd ); | |
| | | | |
| /* | | /* | |
| * paste a bitmap with optional palette mapping | | * paste a bitmap with optional palette mapping | |
| */ | | */ | |
| void (*draw_bitmap) (osd_object_t *osd, uint8_t *bitmap, | | void (*draw_bitmap) (osd_object_t *osd, uint8_t *bitmap, | |
| | | | |
End of changes. 2 change blocks. |
| 2 lines changed or deleted | | 2 lines changed or added | |
|
| post.h | | post.h | |
| | | | |
| skipping to change at line 52 | | skipping to change at line 52 | |
| typedef struct post_class_s post_class_t; | | typedef struct post_class_s post_class_t; | |
| typedef struct post_plugin_s post_plugin_t; | | typedef struct post_plugin_s post_plugin_t; | |
| typedef struct post_in_s post_in_t; | | typedef struct post_in_s post_in_t; | |
| typedef struct post_out_s post_out_t; | | typedef struct post_out_s post_out_t; | |
| | | | |
| struct post_class_s { | | struct post_class_s { | |
| | | | |
| /* | | /* | |
| * open a new instance of this plugin class | | * open a new instance of this plugin class | |
| */ | | */ | |
|
| post_plugin_t* (*open_plugin) (post_class_t *c_this, int inputs, | | post_plugin_t* (*open_plugin) (post_class_t *this, int inputs, | |
| xine_audio_port_t **audio_target, | | xine_audio_port_t **audio_target, | |
| xine_video_port_t **video_target); | | xine_video_port_t **video_target); | |
| | | | |
| /* | | /* | |
| * return short, human readable identifier for this plugin class | | * return short, human readable identifier for this plugin class | |
| */ | | */ | |
|
| char* (*get_identifier) (post_class_t *c_this); | | char* (*get_identifier) (post_class_t *this); | |
| | | | |
| /* | | /* | |
| * return human readable (verbose = 1 line) description for | | * return human readable (verbose = 1 line) description for | |
| * this plugin class | | * this plugin class | |
| */ | | */ | |
|
| char* (*get_description) (post_class_t *c_this); | | char* (*get_description) (post_class_t *this); | |
| | | | |
| /* | | /* | |
| * free all class-related resources | | * free all class-related resources | |
| */ | | */ | |
| | | | |
|
| void (*dispose) (post_class_t *c_this); | | void (*dispose) (post_class_t *this); | |
| }; | | }; | |
| | | | |
| struct post_plugin_s { | | struct post_plugin_s { | |
| | | | |
| /* public part of the plugin */ | | /* public part of the plugin */ | |
| xine_post_t xine_post; | | xine_post_t xine_post; | |
| | | | |
| /* | | /* | |
| * the connections announced by the plugin | | * the connections announced by the plugin | |
| * the plugin must fill these with xine_post_{in,out}_t on init | | * the plugin must fill these with xine_post_{in,out}_t on init | |
| */ | | */ | |
| xine_list_t *input; | | xine_list_t *input; | |
| xine_list_t *output; | | xine_list_t *output; | |
| | | | |
| /* | | /* | |
| * close down, free all resources | | * close down, free all resources | |
| */ | | */ | |
|
| void (*dispose) (post_plugin_t *c_this); | | void (*dispose) (post_plugin_t *this); | |
| | | | |
| /* has dispose been called */ | | /* has dispose been called */ | |
| int dispose_pending; | | int dispose_pending; | |
| | | | |
| /* plugins don't have to init the stuff below */ | | /* plugins don't have to init the stuff below */ | |
| | | | |
| /* | | /* | |
| * the running ticket | | * the running ticket | |
| * | | * | |
| * the plugin must assure to check for ticket revocation in | | * the plugin must assure to check for ticket revocation in | |
| | | | |
End of changes. 5 change blocks. |
| 5 lines changed or deleted | | 5 lines changed or added | |
|
| spu_decoder.h | | spu_decoder.h | |
| | | | |
| skipping to change at line 49 | | skipping to change at line 49 | |
| */ | | */ | |
| | | | |
| typedef struct spu_decoder_class_s spu_decoder_class_t; | | typedef struct spu_decoder_class_s spu_decoder_class_t; | |
| typedef struct spu_decoder_s spu_decoder_t; | | typedef struct spu_decoder_s spu_decoder_t; | |
| | | | |
| struct spu_decoder_class_s { | | struct spu_decoder_class_s { | |
| | | | |
| /* | | /* | |
| * open a new instance of this plugin class | | * open a new instance of this plugin class | |
| */ | | */ | |
|
| spu_decoder_t* (*open_plugin) (spu_decoder_class_t *c_this, xine_stream_t
*stream); | | spu_decoder_t* (*open_plugin) (spu_decoder_class_t *this, xine_stream_t *
stream); | |
| | | | |
| /* | | /* | |
| * return short, human readable identifier for this plugin class | | * return short, human readable identifier for this plugin class | |
| */ | | */ | |
|
| char* (*get_identifier) (spu_decoder_class_t *c_this); | | char* (*get_identifier) (spu_decoder_class_t *this); | |
| | | | |
| /* | | /* | |
| * return human readable (verbose = 1 line) description for | | * return human readable (verbose = 1 line) description for | |
| * this plugin class | | * this plugin class | |
| */ | | */ | |
|
| char* (*get_description) (spu_decoder_class_t *c_this); | | char* (*get_description) (spu_decoder_class_t *this); | |
| | | | |
| /* | | /* | |
| * free all class-related resources | | * free all class-related resources | |
| */ | | */ | |
|
| void (*dispose) (spu_decoder_class_t *c_this); | | void (*dispose) (spu_decoder_class_t *this); | |
| }; | | }; | |
| | | | |
| struct spu_decoder_s { | | struct spu_decoder_s { | |
| | | | |
| /* | | /* | |
| * decode data from buf and feed the overlay to overlay manager | | * decode data from buf and feed the overlay to overlay manager | |
| */ | | */ | |
|
| void (*decode_data) (spu_decoder_t *c_this, buf_element_t *buf); | | void (*decode_data) (spu_decoder_t *this, buf_element_t *buf); | |
| | | | |
| /* | | /* | |
| * reset decoder after engine flush (prepare for new | | * reset decoder after engine flush (prepare for new | |
| * SPU data not related to recently decoded data) | | * SPU data not related to recently decoded data) | |
| */ | | */ | |
|
| void (*reset) (spu_decoder_t *c_this); | | void (*reset) (spu_decoder_t *this); | |
| | | | |
| /* | | /* | |
| * inform decoder that a time reference discontinuity has happened. | | * inform decoder that a time reference discontinuity has happened. | |
| * that is, it must forget any currently held pts value | | * that is, it must forget any currently held pts value | |
| */ | | */ | |
|
| void (*discontinuity) (spu_decoder_t *c_this); | | void (*discontinuity) (spu_decoder_t *this); | |
| | | | |
| /* | | /* | |
| * close down, free all resources | | * close down, free all resources | |
| */ | | */ | |
|
| void (*dispose) (spu_decoder_t *c_this); | | void (*dispose) (spu_decoder_t *this); | |
| | | | |
| /* | | /* | |
| * When the SPU decoder also handles data used in user interaction, | | * When the SPU decoder also handles data used in user interaction, | |
| * you can query the related information here. The typical example | | * you can query the related information here. The typical example | |
| * for this is DVD NAV packets which are handled by the SPU decoder | | * for this is DVD NAV packets which are handled by the SPU decoder | |
| * and can be received readily parsed from here. | | * and can be received readily parsed from here. | |
| * The caller and the decoder must agree on the structure which is | | * The caller and the decoder must agree on the structure which is | |
| * passed here. | | * passed here. | |
| * This function pointer may be NULL, if the plugin does not have | | * This function pointer may be NULL, if the plugin does not have | |
| * such functionality. | | * such functionality. | |
| */ | | */ | |
|
| int (*get_interact_info) (spu_decoder_t *c_this, void *data); | | int (*get_interact_info) (spu_decoder_t *this, void *data); | |
| | | | |
| /* | | /* | |
| * When the SPU decoder also handles menu overlays for user inter- | | * When the SPU decoder also handles menu overlays for user inter- | |
| * action, you can set a menu button here. The typical example for | | * action, you can set a menu button here. The typical example for | |
| * this is DVD menus. | | * this is DVD menus. | |
| * This function pointer may be NULL, if the plugin does not have | | * This function pointer may be NULL, if the plugin does not have | |
| * such functionality. | | * such functionality. | |
| */ | | */ | |
| void (*set_button) (spu_decoder_t *this_gen, int32_t button, int32_t mode
); | | void (*set_button) (spu_decoder_t *this_gen, int32_t button, int32_t mode
); | |
| | | | |
| | | | |
End of changes. 9 change blocks. |
| 9 lines changed or deleted | | 9 lines changed or added | |
|
| video_decoder.h | | video_decoder.h | |
| | | | |
| skipping to change at line 48 | | skipping to change at line 48 | |
| */ | | */ | |
| | | | |
| typedef struct video_decoder_class_s video_decoder_class_t; | | typedef struct video_decoder_class_s video_decoder_class_t; | |
| typedef struct video_decoder_s video_decoder_t; | | typedef struct video_decoder_s video_decoder_t; | |
| | | | |
| struct video_decoder_class_s { | | struct video_decoder_class_s { | |
| | | | |
| /* | | /* | |
| * open a new instance of this plugin class | | * open a new instance of this plugin class | |
| */ | | */ | |
|
| video_decoder_t* (*open_plugin) (video_decoder_class_t *c_this, xine_stre
am_t *stream); | | video_decoder_t* (*open_plugin) (video_decoder_class_t *this, xine_stream
_t *stream); | |
| | | | |
| /* | | /* | |
| * return short, human readable identifier for this plugin class | | * return short, human readable identifier for this plugin class | |
| */ | | */ | |
|
| char* (*get_identifier) (video_decoder_class_t *c_this); | | char* (*get_identifier) (video_decoder_class_t *this); | |
| | | | |
| /* | | /* | |
| * return human readable (verbose = 1 line) description for | | * return human readable (verbose = 1 line) description for | |
| * this plugin class | | * this plugin class | |
| */ | | */ | |
|
| char* (*get_description) (video_decoder_class_t *c_this); | | char* (*get_description) (video_decoder_class_t *this); | |
| | | | |
| /* | | /* | |
| * free all class-related resources | | * free all class-related resources | |
| */ | | */ | |
|
| void (*dispose) (video_decoder_class_t *c_this); | | void (*dispose) (video_decoder_class_t *this); | |
| }; | | }; | |
| | | | |
| struct video_decoder_s { | | struct video_decoder_s { | |
| | | | |
| /* | | /* | |
| * decode data from buf and feed decoded frames to | | * decode data from buf and feed decoded frames to | |
| * video output | | * video output | |
| */ | | */ | |
|
| void (*decode_data) (video_decoder_t *c_this, buf_element_t *buf); | | void (*decode_data) (video_decoder_t *this, buf_element_t *buf); | |
| | | | |
| /* | | /* | |
| * reset decoder after engine flush (prepare for new | | * reset decoder after engine flush (prepare for new | |
| * video data not related to recently decoded data) | | * video data not related to recently decoded data) | |
| */ | | */ | |
|
| void (*reset) (video_decoder_t *c_this); | | void (*reset) (video_decoder_t *this); | |
| | | | |
| /* | | /* | |
| * inform decoder that a time reference discontinuity has happened. | | * inform decoder that a time reference discontinuity has happened. | |
| * that is, it must forget any currently held pts value | | * that is, it must forget any currently held pts value | |
| */ | | */ | |
|
| void (*discontinuity) (video_decoder_t *c_this); | | void (*discontinuity) (video_decoder_t *this); | |
| | | | |
| /* | | /* | |
| * flush out any frames that are still stored in the decoder | | * flush out any frames that are still stored in the decoder | |
| */ | | */ | |
|
| void (*flush) (video_decoder_t *c_this); | | void (*flush) (video_decoder_t *this); | |
| | | | |
| /* | | /* | |
| * close down, free all resources | | * close down, free all resources | |
| */ | | */ | |
|
| void (*dispose) (video_decoder_t *c_this); | | void (*dispose) (video_decoder_t *this); | |
| | | | |
| void *node; /*used by plugin loader */ | | void *node; /*used by plugin loader */ | |
| | | | |
| }; | | }; | |
| | | | |
| #endif | | #endif | |
| | | | |
End of changes. 9 change blocks. |
| 9 lines changed or deleted | | 9 lines changed or added | |
|
| xine.h | | xine.h | |
| | | | |
| skipping to change at line 112 | | skipping to change at line 112 | |
| const char *xine_get_version_string (void) XINE_PROTECTED; | | const char *xine_get_version_string (void) XINE_PROTECTED; | |
| void xine_get_version (int *major, int *minor, int *sub) XINE_PROTECTED; | | void xine_get_version (int *major, int *minor, int *sub) XINE_PROTECTED; | |
| | | | |
| /* compare given version to libxine version, | | /* compare given version to libxine version, | |
| return 1 if compatible, 0 otherwise */ | | return 1 if compatible, 0 otherwise */ | |
| int xine_check_version (int major, int minor, int sub) XINE_PROTECTED; | | int xine_check_version (int major, int minor, int sub) XINE_PROTECTED; | |
| | | | |
| /* static info - which libxine release this header came from */ | | /* static info - which libxine release this header came from */ | |
| #define XINE_MAJOR_VERSION 1 | | #define XINE_MAJOR_VERSION 1 | |
| #define XINE_MINOR_VERSION 1 | | #define XINE_MINOR_VERSION 1 | |
|
| #define XINE_SUB_VERSION 18 | | #define XINE_SUB_VERSION 19 | |
| #define XINE_VERSION "1.1.18.1" | | #define XINE_VERSION "1.1.19" | |
| | | | |
| /* | | /* | |
| * pre-init the xine engine | | * pre-init the xine engine | |
| * | | * | |
| * will first malloc and init a xine_t, create an empty config | | * will first malloc and init a xine_t, create an empty config | |
| * system, then scan through all installed plugins and add them | | * system, then scan through all installed plugins and add them | |
| * to an internal list for later use. | | * to an internal list for later use. | |
| * | | * | |
| * to fully init the xine engine, you have to load config values | | * to fully init the xine engine, you have to load config values | |
| * (either using your own storage method and calling | | * (either using your own storage method and calling | |
| | | | |
| skipping to change at line 367 | | skipping to change at line 367 | |
| /* normal speed value for XINE_PARAM_FINE_SPEED parameter */ | | /* normal speed value for XINE_PARAM_FINE_SPEED parameter */ | |
| #define XINE_FINE_SPEED_NORMAL 1000000 | | #define XINE_FINE_SPEED_NORMAL 1000000 | |
| | | | |
| /* video parameters */ | | /* video parameters */ | |
| #define XINE_PARAM_VO_DEINTERLACE 0x01000000 /* bool
*/ | | #define XINE_PARAM_VO_DEINTERLACE 0x01000000 /* bool
*/ | |
| #define XINE_PARAM_VO_ASPECT_RATIO 0x01000001 /* see below
*/ | | #define XINE_PARAM_VO_ASPECT_RATIO 0x01000001 /* see below
*/ | |
| #define XINE_PARAM_VO_HUE 0x01000002 /* 0..65535
*/ | | #define XINE_PARAM_VO_HUE 0x01000002 /* 0..65535
*/ | |
| #define XINE_PARAM_VO_SATURATION 0x01000003 /* 0..65535
*/ | | #define XINE_PARAM_VO_SATURATION 0x01000003 /* 0..65535
*/ | |
| #define XINE_PARAM_VO_CONTRAST 0x01000004 /* 0..65535
*/ | | #define XINE_PARAM_VO_CONTRAST 0x01000004 /* 0..65535
*/ | |
| #define XINE_PARAM_VO_BRIGHTNESS 0x01000005 /* 0..65535
*/ | | #define XINE_PARAM_VO_BRIGHTNESS 0x01000005 /* 0..65535
*/ | |
|
| | | #define XINE_PARAM_VO_GAMMA 0x0100000c /* 0..65535
*/ | |
| #define XINE_PARAM_VO_ZOOM_X 0x01000008 /* percent
*/ | | #define XINE_PARAM_VO_ZOOM_X 0x01000008 /* percent
*/ | |
| #define XINE_PARAM_VO_ZOOM_Y 0x0100000d /* percent
*/ | | #define XINE_PARAM_VO_ZOOM_Y 0x0100000d /* percent
*/ | |
| #define XINE_PARAM_VO_PAN_SCAN 0x01000009 /* bool
*/ | | #define XINE_PARAM_VO_PAN_SCAN 0x01000009 /* bool
*/ | |
| #define XINE_PARAM_VO_TVMODE 0x0100000a /* ???
*/ | | #define XINE_PARAM_VO_TVMODE 0x0100000a /* ???
*/ | |
| #define XINE_PARAM_VO_WINDOW_WIDTH 0x0100000f /* readonly
*/ | | #define XINE_PARAM_VO_WINDOW_WIDTH 0x0100000f /* readonly
*/ | |
| #define XINE_PARAM_VO_WINDOW_HEIGHT 0x01000010 /* readonly
*/ | | #define XINE_PARAM_VO_WINDOW_HEIGHT 0x01000010 /* readonly
*/ | |
| #define XINE_PARAM_VO_CROP_LEFT 0x01000020 /* crop frame pixels
*/ | | #define XINE_PARAM_VO_CROP_LEFT 0x01000020 /* crop frame pixels
*/ | |
| #define XINE_PARAM_VO_CROP_RIGHT 0x01000021 /* crop frame pixels
*/ | | #define XINE_PARAM_VO_CROP_RIGHT 0x01000021 /* crop frame pixels
*/ | |
| #define XINE_PARAM_VO_CROP_TOP 0x01000022 /* crop frame pixels
*/ | | #define XINE_PARAM_VO_CROP_TOP 0x01000022 /* crop frame pixels
*/ | |
| #define XINE_PARAM_VO_CROP_BOTTOM 0x01000023 /* crop frame pixels
*/ | | #define XINE_PARAM_VO_CROP_BOTTOM 0x01000023 /* crop frame pixels
*/ | |
| | | | |
| skipping to change at line 999 | | skipping to change at line 1000 | |
| #define XINE_META_INFO_ARRANGER 16 | | #define XINE_META_INFO_ARRANGER 16 | |
| #define XINE_META_INFO_LYRICIST 17 | | #define XINE_META_INFO_LYRICIST 17 | |
| #define XINE_META_INFO_AUTHOR 18 | | #define XINE_META_INFO_AUTHOR 18 | |
| #define XINE_META_INFO_CONDUCTOR 19 | | #define XINE_META_INFO_CONDUCTOR 19 | |
| #define XINE_META_INFO_PERFORMER 20 | | #define XINE_META_INFO_PERFORMER 20 | |
| #define XINE_META_INFO_ENSEMBLE 21 | | #define XINE_META_INFO_ENSEMBLE 21 | |
| #define XINE_META_INFO_OPUS 22 | | #define XINE_META_INFO_OPUS 22 | |
| #define XINE_META_INFO_PART 23 | | #define XINE_META_INFO_PART 23 | |
| #define XINE_META_INFO_PARTNUMBER 24 | | #define XINE_META_INFO_PARTNUMBER 24 | |
| #define XINE_META_INFO_LOCATION 25 | | #define XINE_META_INFO_LOCATION 25 | |
|
| | | /* post-1.1.18.1 */ | |
| | | #define XINE_META_INFO_DISCNUMBER 26 | |
| | | | |
| /********************************************************************* | | /********************************************************************* | |
| * plugin management / autoplay / mrl browsing * | | * plugin management / autoplay / mrl browsing * | |
| *********************************************************************/ | | *********************************************************************/ | |
| | | | |
| /* | | /* | |
| * note: the pointers to strings or string arrays returned | | * note: the pointers to strings or string arrays returned | |
| * by some of these functions are pointers to statically | | * by some of these functions are pointers to statically | |
| * alloced internal xine memory chunks. | | * alloced internal xine memory chunks. | |
| * they're only valid between xine function calls | | * they're only valid between xine function calls | |
| | | | |
| skipping to change at line 1704 | | skipping to change at line 1707 | |
| #define XINE_EVENT_FRAME_FORMAT_CHANGE 5 /* e.g. aspect ratio change dur
ing dvd playback */ | | #define XINE_EVENT_FRAME_FORMAT_CHANGE 5 /* e.g. aspect ratio change dur
ing dvd playback */ | |
| #define XINE_EVENT_AUDIO_LEVEL 6 /* report current audio level (
l/r/mute) */ | | #define XINE_EVENT_AUDIO_LEVEL 6 /* report current audio level (
l/r/mute) */ | |
| #define XINE_EVENT_QUIT 7 /* last event sent when stream
is disposed */ | | #define XINE_EVENT_QUIT 7 /* last event sent when stream
is disposed */ | |
| #define XINE_EVENT_PROGRESS 8 /* index creation/network conne
ctions */ | | #define XINE_EVENT_PROGRESS 8 /* index creation/network conne
ctions */ | |
| #define XINE_EVENT_MRL_REFERENCE 9 /* (deprecated) demuxer->fronte
nd: MRL reference(s) for the real stream */ | | #define XINE_EVENT_MRL_REFERENCE 9 /* (deprecated) demuxer->fronte
nd: MRL reference(s) for the real stream */ | |
| #define XINE_EVENT_UI_NUM_BUTTONS 10 /* number of buttons for intera
ctive menus */ | | #define XINE_EVENT_UI_NUM_BUTTONS 10 /* number of buttons for intera
ctive menus */ | |
| #define XINE_EVENT_SPU_BUTTON 11 /* the mouse pointer enter/leav
e a button */ | | #define XINE_EVENT_SPU_BUTTON 11 /* the mouse pointer enter/leav
e a button */ | |
| #define XINE_EVENT_DROPPED_FRAMES 12 /* number of dropped frames is
too high */ | | #define XINE_EVENT_DROPPED_FRAMES 12 /* number of dropped frames is
too high */ | |
| #define XINE_EVENT_MRL_REFERENCE_EXT 13 /* demuxer->frontend: MRL refer
ence(s) for the real stream */ | | #define XINE_EVENT_MRL_REFERENCE_EXT 13 /* demuxer->frontend: MRL refer
ence(s) for the real stream */ | |
| #define XINE_EVENT_AUDIO_AMP_LEVEL 14 /* report current audio amp lev
el (l/r/mute) */ | | #define XINE_EVENT_AUDIO_AMP_LEVEL 14 /* report current audio amp lev
el (l/r/mute) */ | |
|
| | | #define XINE_EVENT_NBC_STATS 15 /* nbc buffer status */ | |
| | | | |
| /* input events coming from frontend */ | | /* input events coming from frontend */ | |
| #define XINE_EVENT_INPUT_MOUSE_BUTTON 101 | | #define XINE_EVENT_INPUT_MOUSE_BUTTON 101 | |
| #define XINE_EVENT_INPUT_MOUSE_MOVE 102 | | #define XINE_EVENT_INPUT_MOUSE_MOVE 102 | |
| #define XINE_EVENT_INPUT_MENU1 103 | | #define XINE_EVENT_INPUT_MENU1 103 | |
| #define XINE_EVENT_INPUT_MENU2 104 | | #define XINE_EVENT_INPUT_MENU2 104 | |
| #define XINE_EVENT_INPUT_MENU3 105 | | #define XINE_EVENT_INPUT_MENU3 105 | |
| #define XINE_EVENT_INPUT_MENU4 106 | | #define XINE_EVENT_INPUT_MENU4 106 | |
| #define XINE_EVENT_INPUT_MENU5 107 | | #define XINE_EVENT_INPUT_MENU5 107 | |
| #define XINE_EVENT_INPUT_MENU6 108 | | #define XINE_EVENT_INPUT_MENU6 108 | |
| | | | |
| skipping to change at line 1886 | | skipping to change at line 1890 | |
| | | | |
| /* | | /* | |
| * index generation / buffering | | * index generation / buffering | |
| */ | | */ | |
| typedef struct { | | typedef struct { | |
| const char *description; /* e.g. "connecting..." */ | | const char *description; /* e.g. "connecting..." */ | |
| int percent; | | int percent; | |
| } xine_progress_data_t; | | } xine_progress_data_t; | |
| | | | |
| /* | | /* | |
|
| | | * nbc buffer status | |
| | | */ | |
| | | typedef struct { | |
| | | int v_percent; /* fill of video buffer */ | |
| | | int64_t v_remaining; /* remaining time in ms till underrun * | |
| | | / | |
| | | int64_t v_bitrate; /* current bitrate */ | |
| | | int v_in_disc; /* in discontinuity */ | |
| | | int a_percent; /* like video, but for audio */ | |
| | | int64_t a_remaining; | |
| | | int64_t a_bitrate; | |
| | | int a_in_disc; | |
| | | int buffering; /* currently filling buffer */ | |
| | | int enabled; /* buffer disabled by engine */ | |
| | | int type; /* 0=buffer put, 1=buffer get */ | |
| | | } xine_nbc_stats_data_t; | |
| | | | |
| | | /* | |
| * mrl reference data is sent by demuxers when a reference stream is found. | | * mrl reference data is sent by demuxers when a reference stream is found. | |
| * this stream just contains pointers (urls) to the real data, which are | | * this stream just contains pointers (urls) to the real data, which are | |
| * passed to frontend using this event type. (examples: .asx, .mov and .ram
) | | * passed to frontend using this event type. (examples: .asx, .mov and .ram
) | |
| * | | * | |
| * ideally, frontends should add these mrls to a "hierarchical playlist". | | * ideally, frontends should add these mrls to a "hierarchical playlist". | |
| * that is, instead of the original file, the ones provided here should be | | * that is, instead of the original file, the ones provided here should be | |
| * played instead. on pratice, just using a simple playlist should work. | | * played instead. on pratice, just using a simple playlist should work. | |
| * | | * | |
| * mrl references should be played in the same order they are received, jus
t | | * mrl references should be played in the same order they are received, jus
t | |
| * after the current stream finishes. | | * after the current stream finishes. | |
| | | | |
End of changes. 5 change blocks. |
| 2 lines changed or deleted | | 24 lines changed or added | |
|