summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGuenter Bartsch <guenter@users.sourceforge.net>2002-11-09 23:22:32 +0000
committerGuenter Bartsch <guenter@users.sourceforge.net>2002-11-09 23:22:32 +0000
commit839537da53801ce9542eded0813c660e71ab2e58 (patch)
tree27591bc00bb83fff0390c4dad6cb50229072463f /src
parentb91288a28a292d5ab9c22c20474708d3e85308f0 (diff)
downloadxine-lib-839537da53801ce9542eded0813c660e71ab2e58.tar.gz
xine-lib-839537da53801ce9542eded0813c660e71ab2e58.tar.bz2
beginnings of the get_video/audio_frame api
CVS patchset: 3215 CVS date: 2002/11/09 23:22:32
Diffstat (limited to 'src')
-rw-r--r--src/demuxers/demux.h22
-rw-r--r--src/demuxers/demux_aiff.c6
-rw-r--r--src/demuxers/demux_asf.c6
-rw-r--r--src/demuxers/demux_avi.c6
-rw-r--r--src/demuxers/demux_cda.c6
-rw-r--r--src/demuxers/demux_eawve.c6
-rw-r--r--src/demuxers/demux_elem.c6
-rw-r--r--src/demuxers/demux_film.c6
-rw-r--r--src/demuxers/demux_fli.c6
-rw-r--r--src/demuxers/demux_idcin.c6
-rw-r--r--src/demuxers/demux_mpeg.c6
-rw-r--r--src/demuxers/demux_mpeg_block.c47
-rw-r--r--src/demuxers/demux_mpgaudio.c5
-rw-r--r--src/demuxers/demux_ogg.c6
-rw-r--r--src/demuxers/demux_pes.c4
-rw-r--r--src/demuxers/demux_qt.c6
-rw-r--r--src/demuxers/demux_real.c6
-rw-r--r--src/demuxers/demux_realaudio.c6
-rw-r--r--src/demuxers/demux_roq.c6
-rw-r--r--src/demuxers/demux_smjpeg.c6
-rw-r--r--src/demuxers/demux_snd.c6
-rw-r--r--src/demuxers/demux_ts.c24
-rw-r--r--src/demuxers/demux_voc.c6
-rw-r--r--src/demuxers/demux_vqa.c6
-rw-r--r--src/demuxers/demux_wav.c6
-rw-r--r--src/demuxers/demux_wc3movie.c6
-rw-r--r--src/demuxers/demux_yuv4mpeg2.c6
-rw-r--r--src/xine-engine/buffer.h4
-rw-r--r--src/xine-engine/xine.c29
29 files changed, 207 insertions, 60 deletions
diff --git a/src/demuxers/demux.h b/src/demuxers/demux.h
index 29bd0cf45..16c827cae 100644
--- a/src/demuxers/demux.h
+++ b/src/demuxers/demux.h
@@ -17,13 +17,14 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: demux.h,v 1.23 2002/11/01 17:41:02 mroi Exp $
+ * $Id: demux.h,v 1.24 2002/11/09 23:22:32 guenter Exp $
*/
#ifndef HAVE_DEMUX_H
#define HAVE_DEMUX_H
#include "buffer.h"
+#include "video_out.h"
#include "xine_internal.h"
#if defined(XINE_COMPILE)
#include "input/input_plugin.h"
@@ -31,7 +32,7 @@
#include "input_plugin.h"
#endif
-#define DEMUXER_PLUGIN_IFACE_VERSION 15
+#define DEMUXER_PLUGIN_IFACE_VERSION 16
#define DEMUX_OK 0
#define DEMUX_FINISHED 1
@@ -148,6 +149,23 @@ struct demux_plugin_s {
int (*get_stream_length) (demux_plugin_t *this);
+ /*
+ * get audio/video frames
+ *
+ * experimental, function pointers can be NULL for now.
+ */
+
+ int (*get_video_frame) (demux_plugin_t *this,
+ int timestamp, /* msec */
+ int *width, int *height,
+ int *ratio_code,
+ int *duration, /* msec */
+ int *format,
+ uint8_t *img) ;
+
+ /* called by video_out for every frame it receives */
+ void (*got_video_frame_cb) (demux_plugin_t *this,
+ vo_frame_t *frame);
/*
* "backwards" link to plugin class
diff --git a/src/demuxers/demux_aiff.c b/src/demuxers/demux_aiff.c
index 04dd677f3..ac4bb13fa 100644
--- a/src/demuxers/demux_aiff.c
+++ b/src/demuxers/demux_aiff.c
@@ -19,7 +19,7 @@
*
* AIFF File Demuxer by Mike Melanson (melanson@pcisys.net)
*
- * $Id: demux_aiff.c,v 1.15 2002/11/01 17:41:03 mroi Exp $
+ * $Id: demux_aiff.c,v 1.16 2002/11/09 23:22:32 guenter Exp $
*
*/
@@ -343,6 +343,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_aiff_dispose;
this->demux_plugin.get_status = demux_aiff_get_status;
this->demux_plugin.get_stream_length = demux_aiff_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -454,6 +456,6 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "aiff", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "aiff", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_asf.c b/src/demuxers/demux_asf.c
index 632c6c702..ce1d020ad 100644
--- a/src/demuxers/demux_asf.c
+++ b/src/demuxers/demux_asf.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: demux_asf.c,v 1.76 2002/11/03 20:41:55 guenter Exp $
+ * $Id: demux_asf.c,v 1.77 2002/11/09 23:22:32 guenter Exp $
*
* demultiplexer for asf streams
*
@@ -1379,6 +1379,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen,
this->demux_plugin.dispose = demux_asf_dispose;
this->demux_plugin.get_status = demux_asf_get_status;
this->demux_plugin.get_stream_length = demux_asf_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -1435,6 +1437,6 @@ static void *init_class (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "asf", XINE_VERSION_CODE, NULL, init_class },
+ { PLUGIN_DEMUX, 16, "asf", XINE_VERSION_CODE, NULL, init_class },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_avi.c b/src/demuxers/demux_avi.c
index 3c869d925..f13c8bf43 100644
--- a/src/demuxers/demux_avi.c
+++ b/src/demuxers/demux_avi.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: demux_avi.c,v 1.131 2002/11/01 17:41:04 mroi Exp $
+ * $Id: demux_avi.c,v 1.132 2002/11/09 23:22:32 guenter Exp $
*
* demultiplexer for avi streams
*
@@ -1491,6 +1491,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_avi_dispose;
this->demux_plugin.get_status = demux_avi_get_status;
this->demux_plugin.get_stream_length = demux_avi_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -1613,6 +1615,6 @@ static void *init_class (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "avi", XINE_VERSION_CODE, NULL, init_class },
+ { PLUGIN_DEMUX, 16, "avi", XINE_VERSION_CODE, NULL, init_class },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_cda.c b/src/demuxers/demux_cda.c
index de37933a2..8dd2fc144 100644
--- a/src/demuxers/demux_cda.c
+++ b/src/demuxers/demux_cda.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: demux_cda.c,v 1.32 2002/11/02 12:50:14 tmattern Exp $
+ * $Id: demux_cda.c,v 1.33 2002/11/09 23:22:32 guenter Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -190,6 +190,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_cda_dispose;
this->demux_plugin.get_status = demux_cda_get_status;
this->demux_plugin.get_stream_length = demux_cda_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -281,6 +283,6 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "cda", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "cda", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_eawve.c b/src/demuxers/demux_eawve.c
index bcfae8f61..f12fd0c67 100644
--- a/src/demuxers/demux_eawve.c
+++ b/src/demuxers/demux_eawve.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: demux_eawve.c,v 1.5 2002/11/03 21:08:42 guenter Exp $
+ * $Id: demux_eawve.c,v 1.6 2002/11/09 23:22:32 guenter Exp $
*
* demux_eawve.c, Demuxer plugin for Electronic Arts' WVE file format
*
@@ -390,6 +390,8 @@ static demux_plugin_t* open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = (void*)demux_eawve_dispose;
this->demux_plugin.get_status = (void*)demux_eawve_get_status;
this->demux_plugin.get_stream_length = (void*)demux_eawve_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -486,6 +488,6 @@ static void *init_plugin (xine_t *xine, void *data)
}
plugin_info_t xine_plugin_info[] = {
- { PLUGIN_DEMUX, 15, "wve", XINE_VERSION_CODE, NULL, (void*)init_plugin},
+ { PLUGIN_DEMUX, 16, "wve", XINE_VERSION_CODE, NULL, (void*)init_plugin},
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_elem.c b/src/demuxers/demux_elem.c
index e14e491e2..fd6aa20a3 100644
--- a/src/demuxers/demux_elem.c
+++ b/src/demuxers/demux_elem.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: demux_elem.c,v 1.59 2002/11/01 17:41:06 mroi Exp $
+ * $Id: demux_elem.c,v 1.60 2002/11/09 23:22:32 guenter Exp $
*
* demultiplexer for elementary mpeg streams
*
@@ -198,6 +198,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_mpeg_elem_dispose;
this->demux_plugin.get_status = demux_mpeg_elem_get_status;
this->demux_plugin.get_stream_length = demux_mpeg_elem_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -335,6 +337,6 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "elem", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "elem", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_film.c b/src/demuxers/demux_film.c
index df4693c83..aaecfb395 100644
--- a/src/demuxers/demux_film.c
+++ b/src/demuxers/demux_film.c
@@ -21,7 +21,7 @@
* For more information on the FILM file format, visit:
* http://www.pcisys.net/~melanson/codecs/
*
- * $Id: demux_film.c,v 1.42 2002/11/01 17:41:08 mroi Exp $
+ * $Id: demux_film.c,v 1.43 2002/11/09 23:22:32 guenter Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -660,6 +660,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_film_dispose;
this->demux_plugin.get_status = demux_film_get_status;
this->demux_plugin.get_stream_length = demux_film_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -788,6 +790,6 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "film", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "film", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_fli.c b/src/demuxers/demux_fli.c
index 1a9c1de77..924f795de 100644
--- a/src/demuxers/demux_fli.c
+++ b/src/demuxers/demux_fli.c
@@ -22,7 +22,7 @@
* avoid while programming a FLI decoder, visit:
* http://www.pcisys.net/~melanson/codecs/
*
- * $Id: demux_fli.c,v 1.25 2002/11/01 17:41:11 mroi Exp $
+ * $Id: demux_fli.c,v 1.26 2002/11/09 23:22:32 guenter Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -290,6 +290,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_fli_dispose;
this->demux_plugin.get_status = demux_fli_get_status;
this->demux_plugin.get_stream_length = demux_fli_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -403,6 +405,6 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "fli", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "fli", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_idcin.c b/src/demuxers/demux_idcin.c
index 10bb588bd..3996afce5 100644
--- a/src/demuxers/demux_idcin.c
+++ b/src/demuxers/demux_idcin.c
@@ -63,7 +63,7 @@
* - if any bytes exceed 63, do not shift the bytes at all before
* transmitting them to the video decoder
*
- * $Id: demux_idcin.c,v 1.26 2002/11/01 17:41:13 mroi Exp $
+ * $Id: demux_idcin.c,v 1.27 2002/11/09 23:22:32 guenter Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -465,6 +465,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_idcin_dispose;
this->demux_plugin.get_status = demux_idcin_get_status;
this->demux_plugin.get_stream_length = demux_idcin_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -577,6 +579,6 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "idcin", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "idcin", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_mpeg.c b/src/demuxers/demux_mpeg.c
index 6fc4b07e3..c6fe792b5 100644
--- a/src/demuxers/demux_mpeg.c
+++ b/src/demuxers/demux_mpeg.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: demux_mpeg.c,v 1.94 2002/11/01 17:41:13 mroi Exp $
+ * $Id: demux_mpeg.c,v 1.95 2002/11/09 23:22:32 guenter Exp $
*
* demultiplexer for mpeg 1/2 program streams
* reads streams of variable blocksizes
@@ -897,6 +897,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_mpeg_dispose;
this->demux_plugin.get_status = demux_mpeg_get_status;
this->demux_plugin.get_stream_length = demux_mpeg_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -1128,6 +1130,6 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "mpeg", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "mpeg", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_mpeg_block.c b/src/demuxers/demux_mpeg_block.c
index b3082ceba..b6b1608dc 100644
--- a/src/demuxers/demux_mpeg_block.c
+++ b/src/demuxers/demux_mpeg_block.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: demux_mpeg_block.c,v 1.135 2002/11/01 17:41:15 mroi Exp $
+ * $Id: demux_mpeg_block.c,v 1.136 2002/11/09 23:22:32 guenter Exp $
*
* demultiplexer for mpeg 1/2 program streams
*
@@ -80,6 +80,9 @@ typedef struct demux_mpeg_block_s {
int send_newpts;
int buf_flag_seek;
+ /* stream index for get_audio/video_frame */
+ int have_index;
+
} demux_mpeg_block_t ;
typedef struct {
@@ -927,8 +930,36 @@ static int demux_mpeg_block_get_stream_length (demux_plugin_t *this_gen) {
return this->input->get_length (this->input) / (this->rate * 50);
else
return 0;
+}
+
+static void generate_index (demux_mpeg_block_t *this) {
+
+ /* FIXME: implement */
}
+
+static int demux_mpeg_block_get_video_frame (demux_plugin_t *this_gen,
+ int timestamp,
+ int *width, int *height,
+ int *ratio_code,
+ int *duration,
+ int *format,
+ uint8_t *img) {
+
+ demux_mpeg_block_t *this = (demux_mpeg_block_t*) this_gen;
+
+ if (!this->have_index) {
+
+ generate_index (this);
+
+ this->have_index = 1;
+ }
+
+
+ return 0;
+}
+
+
static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *stream,
input_plugin_t *input_gen) {
@@ -955,10 +986,13 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_mpeg_block_dispose;
this->demux_plugin.get_status = demux_mpeg_block_get_status;
this->demux_plugin.get_stream_length = demux_mpeg_block_get_stream_length;
+ this->demux_plugin.get_video_frame = demux_mpeg_block_get_video_frame;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
- this->scratch = xine_xmalloc_aligned (512, 4096, (void**) &this->scratch_base);
- this->status = DEMUX_FINISHED;
+ this->scratch = xine_xmalloc_aligned (512, 4096, (void**) &this->scratch_base);
+ this->status = DEMUX_FINISHED;
+ this->have_index = 0;
#ifdef LOG
printf ("demux_mpeg_block:open_plugin:detection_method=%d\n",
@@ -1029,8 +1063,9 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
free (this);
return NULL;
}
- if( (!strncmp((ending + 3), "mpeg2", 5)) ||
- (!strncmp((ending + 3), "mpeg1", 5)) ) {
+ if ( (!strncasecmp (ending, ".vob", 4)) ||
+ (!strncmp((ending + 3), "mpeg2", 5)) ||
+ (!strncmp((ending + 3), "mpeg1", 5)) ) {
this->blocksize = 2048;
demux_mpeg_block_accept_input(this, input);
} else if(!strncmp(mrl, "vcd", 3)) {
@@ -1118,6 +1153,6 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "mpeg_block", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "mpeg_block", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_mpgaudio.c b/src/demuxers/demux_mpgaudio.c
index 056ae8c43..054bb75fb 100644
--- a/src/demuxers/demux_mpgaudio.c
+++ b/src/demuxers/demux_mpgaudio.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: demux_mpgaudio.c,v 1.78 2002/11/09 13:52:32 mroi Exp $
+ * $Id: demux_mpgaudio.c,v 1.79 2002/11/09 23:22:32 guenter Exp $
*
* demultiplexer for mpeg audio (i.e. mp3) streams
*
@@ -570,6 +570,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_mpgaudio_dispose;
this->demux_plugin.get_status = demux_mpgaudio_get_status;
this->demux_plugin.get_stream_length = demux_mpgaudio_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
this->demux_plugin.demux_class = class_gen;
this->input = input;
@@ -637,6 +638,6 @@ static void *init_class (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "mp3", XINE_VERSION_CODE, NULL, init_class },
+ { PLUGIN_DEMUX, 16, "mp3", XINE_VERSION_CODE, NULL, init_class },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_ogg.c b/src/demuxers/demux_ogg.c
index 8c969e16b..eae65a6d0 100644
--- a/src/demuxers/demux_ogg.c
+++ b/src/demuxers/demux_ogg.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: demux_ogg.c,v 1.50 2002/11/01 17:41:20 mroi Exp $
+ * $Id: demux_ogg.c,v 1.51 2002/11/09 23:22:32 guenter Exp $
*
* demultiplexer for ogg streams
*
@@ -1000,6 +1000,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen,
this->demux_plugin.dispose = demux_ogg_dispose;
this->demux_plugin.get_status = demux_ogg_get_status;
this->demux_plugin.get_stream_length = demux_ogg_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -1060,6 +1062,6 @@ static void *init_class (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "ogg", XINE_VERSION_CODE, NULL, init_class },
+ { PLUGIN_DEMUX, 16, "ogg", XINE_VERSION_CODE, NULL, init_class },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_pes.c b/src/demuxers/demux_pes.c
index 5977d7ef5..18a111799 100644
--- a/src/demuxers/demux_pes.c
+++ b/src/demuxers/demux_pes.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: demux_pes.c,v 1.41 2002/11/01 17:41:22 mroi Exp $
+ * $Id: demux_pes.c,v 1.42 2002/11/09 23:22:32 guenter Exp $
*
* demultiplexer for mpeg 2 PES (Packetized Elementary Streams)
* reads streams of variable blocksizes
@@ -624,6 +624,8 @@ static void *init_demuxer_plugin(xine_t *xine, void *data) {
this->demux_plugin.get_status = demux_pes_get_status;
this->demux_plugin.get_identifier = demux_pes_get_id;
this->demux_plugin.get_stream_length = demux_pes_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.get_mimetypes = demux_pes_get_mimetypes;
this->status = DEMUX_FINISHED;
diff --git a/src/demuxers/demux_qt.c b/src/demuxers/demux_qt.c
index 3c03d24c2..126c8a33b 100644
--- a/src/demuxers/demux_qt.c
+++ b/src/demuxers/demux_qt.c
@@ -30,7 +30,7 @@
* build_frame_table
* free_qt_info
*
- * $Id: demux_qt.c,v 1.108 2002/11/01 17:41:23 mroi Exp $
+ * $Id: demux_qt.c,v 1.109 2002/11/09 23:22:32 guenter Exp $
*
*/
@@ -1824,6 +1824,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_qt_dispose;
this->demux_plugin.get_status = demux_qt_get_status;
this->demux_plugin.get_stream_length = demux_qt_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -1970,6 +1972,6 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "quicktime", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "quicktime", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_real.c b/src/demuxers/demux_real.c
index 9d7d447b1..141a07467 100644
--- a/src/demuxers/demux_real.c
+++ b/src/demuxers/demux_real.c
@@ -21,7 +21,7 @@
* For more information regarding the Real file format, visit:
* http://www.pcisys.net/~melanson/codecs/
*
- * $Id: demux_real.c,v 1.7 2002/11/01 17:41:25 mroi Exp $
+ * $Id: demux_real.c,v 1.8 2002/11/09 23:22:32 guenter Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -403,6 +403,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_real_dispose;
this->demux_plugin.get_status = demux_real_get_status;
this->demux_plugin.get_stream_length = demux_real_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -508,6 +510,6 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "real", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "real", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_realaudio.c b/src/demuxers/demux_realaudio.c
index 9b68412bb..a3f5fb210 100644
--- a/src/demuxers/demux_realaudio.c
+++ b/src/demuxers/demux_realaudio.c
@@ -19,7 +19,7 @@
*
* RealAudio File Demuxer by Mike Melanson (melanson@pcisys.net)
*
- * $Id: demux_realaudio.c,v 1.3 2002/11/01 17:41:26 mroi Exp $
+ * $Id: demux_realaudio.c,v 1.4 2002/11/09 23:22:32 guenter Exp $
*
*/
@@ -288,6 +288,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_ra_dispose;
this->demux_plugin.get_status = demux_ra_get_status;
this->demux_plugin.get_stream_length = demux_ra_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -398,7 +400,7 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "realaudio", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "realaudio", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_roq.c b/src/demuxers/demux_roq.c
index 9f47633a2..dee6c5ef5 100644
--- a/src/demuxers/demux_roq.c
+++ b/src/demuxers/demux_roq.c
@@ -21,7 +21,7 @@
* For more information regarding the RoQ file format, visit:
* http://www.csse.monash.edu.au/~timf/
*
- * $Id: demux_roq.c,v 1.28 2002/11/01 17:41:26 mroi Exp $
+ * $Id: demux_roq.c,v 1.29 2002/11/09 23:22:32 guenter Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -411,6 +411,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_roq_dispose;
this->demux_plugin.get_status = demux_roq_get_status;
this->demux_plugin.get_stream_length = demux_roq_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -519,6 +521,6 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "roq", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "roq", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_smjpeg.c b/src/demuxers/demux_smjpeg.c
index 93367cf4f..7ab3819d9 100644
--- a/src/demuxers/demux_smjpeg.c
+++ b/src/demuxers/demux_smjpeg.c
@@ -21,7 +21,7 @@
* For more information on the SMJPEG file format, visit:
* http://www.lokigames.com/development/smjpeg.php3
*
- * $Id: demux_smjpeg.c,v 1.24 2002/11/01 17:41:27 mroi Exp $
+ * $Id: demux_smjpeg.c,v 1.25 2002/11/09 23:22:32 guenter Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -422,6 +422,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_smjpeg_dispose;
this->demux_plugin.get_status = demux_smjpeg_get_status;
this->demux_plugin.get_stream_length = demux_smjpeg_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -547,6 +549,6 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "smjpeg", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "smjpeg", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_snd.c b/src/demuxers/demux_snd.c
index daf0a53b9..72458cf51 100644
--- a/src/demuxers/demux_snd.c
+++ b/src/demuxers/demux_snd.c
@@ -19,7 +19,7 @@
*
* SND/AU File Demuxer by Mike Melanson (melanson@pcisys.net)
*
- * $Id: demux_snd.c,v 1.16 2002/11/01 17:41:27 mroi Exp $
+ * $Id: demux_snd.c,v 1.17 2002/11/09 23:22:32 guenter Exp $
*
*/
@@ -326,6 +326,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_snd_dispose;
this->demux_plugin.get_status = demux_snd_get_status;
this->demux_plugin.get_stream_length = demux_snd_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -438,6 +440,6 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "snd", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "snd", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_ts.c b/src/demuxers/demux_ts.c
index 1ee74bbe4..3115f510c 100644
--- a/src/demuxers/demux_ts.c
+++ b/src/demuxers/demux_ts.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: demux_ts.c,v 1.61 2002/11/07 04:08:14 guenter Exp $
+ * $Id: demux_ts.c,v 1.62 2002/11/09 23:22:32 guenter Exp $
*
* Demultiplexer for MPEG2 Transport Streams.
*
@@ -1414,7 +1414,23 @@ static int demux_ts_get_stream_length (demux_plugin_t *this_gen) {
demux_ts_t*this = (demux_ts_t*)this_gen;
- return this->input->get_length (this->input) / (this->rate * 50);
+ if (this->rate)
+ return this->input->get_length (this->input) / (this->rate * 50);
+ else
+ return 0;
+}
+
+static int demux_ts_get_video_frame (demux_plugin_t *this_gen,
+ int timestamp,
+ int *width, int *height,
+ int *ratio_code,
+ int *duration,
+ int *format,
+ uint8_t *img) {
+
+ /* demux_ts_t *this = (demux_ts_t*)this_gen; */
+
+ return 0;
}
@@ -1529,6 +1545,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen,
this->demux_plugin.dispose = demux_ts_dispose;
this->demux_plugin.get_status = demux_ts_get_status;
this->demux_plugin.get_stream_length = demux_ts_get_stream_length;
+ this->demux_plugin.get_video_frame = demux_ts_get_video_frame;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
/*
@@ -1618,6 +1636,6 @@ static void *init_class (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "mpeg-ts", XINE_VERSION_CODE, NULL, init_class },
+ { PLUGIN_DEMUX, 16, "mpeg-ts", XINE_VERSION_CODE, NULL, init_class },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_voc.c b/src/demuxers/demux_voc.c
index 36d902ce3..96bdcc362 100644
--- a/src/demuxers/demux_voc.c
+++ b/src/demuxers/demux_voc.c
@@ -23,7 +23,7 @@
* It will only play that block if it is PCM data. More variations will be
* supported as they are encountered.
*
- * $Id: demux_voc.c,v 1.16 2002/11/01 17:41:28 mroi Exp $
+ * $Id: demux_voc.c,v 1.17 2002/11/09 23:22:32 guenter Exp $
*
*/
@@ -319,6 +319,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_voc_dispose;
this->demux_plugin.get_status = demux_voc_get_status;
this->demux_plugin.get_stream_length = demux_voc_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -426,6 +428,6 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "voc", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "voc", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_vqa.c b/src/demuxers/demux_vqa.c
index cb017068b..7a3c1bd41 100644
--- a/src/demuxers/demux_vqa.c
+++ b/src/demuxers/demux_vqa.c
@@ -27,7 +27,7 @@
* block needs information from the previous audio block in order to be
* decoded, thus making random seeking difficult.
*
- * $Id: demux_vqa.c,v 1.17 2002/11/01 17:41:28 mroi Exp $
+ * $Id: demux_vqa.c,v 1.18 2002/11/09 23:22:33 guenter Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -373,6 +373,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_vqa_dispose;
this->demux_plugin.get_status = demux_vqa_get_status;
this->demux_plugin.get_stream_length = demux_vqa_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -480,6 +482,6 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "vqa", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "vqa", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_wav.c b/src/demuxers/demux_wav.c
index e6369f94a..bcf85babb 100644
--- a/src/demuxers/demux_wav.c
+++ b/src/demuxers/demux_wav.c
@@ -20,7 +20,7 @@
* MS WAV File Demuxer by Mike Melanson (melanson@pcisys.net)
* based on WAV specs that are available far and wide
*
- * $Id: demux_wav.c,v 1.24 2002/11/01 17:41:28 mroi Exp $
+ * $Id: demux_wav.c,v 1.25 2002/11/09 23:22:33 guenter Exp $
*
*/
@@ -318,6 +318,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_wav_dispose;
this->demux_plugin.get_status = demux_wav_get_status;
this->demux_plugin.get_stream_length = demux_wav_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -440,6 +442,6 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "wav", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "wav", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_wc3movie.c b/src/demuxers/demux_wc3movie.c
index 3b17db78c..1c7705f7c 100644
--- a/src/demuxers/demux_wc3movie.c
+++ b/src/demuxers/demux_wc3movie.c
@@ -22,7 +22,7 @@
* For more information on the MVE file format, visit:
* http://www.pcisys.net/~melanson/codecs/
*
- * $Id: demux_wc3movie.c,v 1.24 2002/11/01 17:41:28 mroi Exp $
+ * $Id: demux_wc3movie.c,v 1.25 2002/11/09 23:22:33 guenter Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -677,6 +677,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_mve_dispose;
this->demux_plugin.get_status = demux_mve_get_status;
this->demux_plugin.get_stream_length = demux_mve_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -776,6 +778,6 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "wc3movie", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "wc3movie", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/demuxers/demux_yuv4mpeg2.c b/src/demuxers/demux_yuv4mpeg2.c
index 09f0c01d4..084828fc7 100644
--- a/src/demuxers/demux_yuv4mpeg2.c
+++ b/src/demuxers/demux_yuv4mpeg2.c
@@ -22,7 +22,7 @@
* tools, visit:
* http://mjpeg.sourceforge.net/
*
- * $Id: demux_yuv4mpeg2.c,v 1.9 2002/11/01 17:41:29 mroi Exp $
+ * $Id: demux_yuv4mpeg2.c,v 1.10 2002/11/09 23:22:33 guenter Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -337,6 +337,8 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str
this->demux_plugin.dispose = demux_yuv4mpeg2_dispose;
this->demux_plugin.get_status = demux_yuv4mpeg2_get_status;
this->demux_plugin.get_stream_length = demux_yuv4mpeg2_get_stream_length;
+ this->demux_plugin.get_video_frame = NULL;
+ this->demux_plugin.got_video_frame_cb= NULL;
this->demux_plugin.demux_class = class_gen;
this->status = DEMUX_FINISHED;
@@ -442,6 +444,6 @@ static void *init_plugin (xine_t *xine, void *data) {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_DEMUX, 15, "yuv4mpeg2", XINE_VERSION_CODE, NULL, init_plugin },
+ { PLUGIN_DEMUX, 16, "yuv4mpeg2", XINE_VERSION_CODE, NULL, init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/xine-engine/buffer.h b/src/xine-engine/buffer.h
index d17239de0..6fdabb9ea 100644
--- a/src/xine-engine/buffer.h
+++ b/src/xine-engine/buffer.h
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: buffer.h,v 1.76 2002/10/31 05:23:02 tmmm Exp $
+ * $Id: buffer.h,v 1.77 2002/11/09 23:22:33 guenter Exp $
*
*
* contents:
@@ -221,6 +221,8 @@ struct buf_element_s {
#define BUF_FLAG_SEEK 0x0100
#define BUF_FLAG_SPECIAL 0x0200
#define BUF_FLAG_NO_VIDEO 0x0400
+/* do not decode the buffer contents, detect framing only */
+#define BUF_FLAG_FRAMING 0x0800
/* these are the types of special buffers */
/*
diff --git a/src/xine-engine/xine.c b/src/xine-engine/xine.c
index 77c552c33..9ba404b73 100644
--- a/src/xine-engine/xine.c
+++ b/src/xine-engine/xine.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: xine.c,v 1.189 2002/11/05 23:29:48 tmattern Exp $
+ * $Id: xine.c,v 1.190 2002/11/09 23:22:33 guenter Exp $
*
* top-level xine functions
*
@@ -1057,6 +1057,33 @@ int xine_get_current_frame (xine_stream_t *stream, int *width, int *height,
return 1;
}
+int xine_get_video_frame (xine_stream_t *stream,
+ int timestamp, /* msec */
+ int *width, int *height,
+ int *ratio_code,
+ int *duration, /* msec */
+ int *format,
+ uint8_t *img) {
+ int ret;
+
+ pthread_mutex_lock (&stream->frontend_lock);
+
+ if (stream->status != XINE_STATUS_STOP)
+ xine_stop_internal (stream);
+
+ if (stream->demux_plugin->get_video_frame)
+ ret = stream->demux_plugin->get_video_frame (stream->demux_plugin,
+ timestamp, width, height,
+ ratio_code, duration,
+ format, img);
+ else
+ ret = 0;
+
+ pthread_mutex_unlock (&stream->frontend_lock);
+
+ return ret;
+}
+
int xine_get_spu_lang (xine_stream_t *stream, int channel, char *lang) {
if (stream->input_plugin) {