mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-05 10:12:20 +00:00
ext/dvdread/dvdreadsrc.c: Add some more debugging and fix duration query in BYTES.
Original commit message from CVS: * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_class_init), (gst_dvd_read_src_seekable), (gst_dvd_read_src_get_size), (gst_dvd_read_src_do_seek), (gst_dvd_read_src_do_duration_query), (gst_dvd_read_src_do_position_query): Add some more debugging and fix duration query in BYTES.
This commit is contained in:
parent
50501c07be
commit
50a7874949
2 changed files with 53 additions and 1 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2006-02-10 Tim-Philipp Müller <tim at centricular dot net>
|
||||||
|
|
||||||
|
* ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_class_init),
|
||||||
|
(gst_dvd_read_src_seekable), (gst_dvd_read_src_get_size),
|
||||||
|
(gst_dvd_read_src_do_seek), (gst_dvd_read_src_do_duration_query),
|
||||||
|
(gst_dvd_read_src_do_position_query):
|
||||||
|
Add some more debugging and fix duration query in BYTES.
|
||||||
|
|
||||||
2006-02-09 Tim-Philipp Müller <tim at centricular dot net>
|
2006-02-09 Tim-Philipp Müller <tim at centricular dot net>
|
||||||
|
|
||||||
* configure.ac:
|
* configure.ac:
|
||||||
|
|
|
@ -86,6 +86,8 @@ static void gst_dvd_read_src_get_property (GObject * object, guint prop_id,
|
||||||
GValue * value, GParamSpec * pspec);
|
GValue * value, GParamSpec * pspec);
|
||||||
static GstEvent *gst_dvd_read_src_make_clut_change_event (GstDvdReadSrc * src,
|
static GstEvent *gst_dvd_read_src_make_clut_change_event (GstDvdReadSrc * src,
|
||||||
const guint * clut);
|
const guint * clut);
|
||||||
|
static gboolean gst_dvd_read_src_get_size (GstBaseSrc * bsrc, guint64 * size);
|
||||||
|
static gboolean gst_dvd_read_src_seekable (GstBaseSrc * bsrc);
|
||||||
|
|
||||||
GST_BOILERPLATE_FULL (GstDvdReadSrc, gst_dvd_read_src, GstPushSrc,
|
GST_BOILERPLATE_FULL (GstDvdReadSrc, gst_dvd_read_src, GstPushSrc,
|
||||||
GST_TYPE_PUSH_SRC, gst_dvd_read_src_do_init)
|
GST_TYPE_PUSH_SRC, gst_dvd_read_src_do_init)
|
||||||
|
@ -163,6 +165,8 @@ gst_dvd_read_src_class_init (GstDvdReadSrcClass * klass)
|
||||||
gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_dvd_read_src_stop);
|
gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_dvd_read_src_stop);
|
||||||
gstbasesrc_class->query = GST_DEBUG_FUNCPTR (gst_dvd_read_src_src_query);
|
gstbasesrc_class->query = GST_DEBUG_FUNCPTR (gst_dvd_read_src_src_query);
|
||||||
gstbasesrc_class->event = GST_DEBUG_FUNCPTR (gst_dvd_read_src_src_event);
|
gstbasesrc_class->event = GST_DEBUG_FUNCPTR (gst_dvd_read_src_src_event);
|
||||||
|
gstbasesrc_class->get_size = GST_DEBUG_FUNCPTR (gst_dvd_read_src_get_size);
|
||||||
|
gstbasesrc_class->is_seekable = GST_DEBUG_FUNCPTR (gst_dvd_read_src_seekable);
|
||||||
|
|
||||||
gstpushsrc_class->create = GST_DEBUG_FUNCPTR (gst_dvd_read_src_create);
|
gstpushsrc_class->create = GST_DEBUG_FUNCPTR (gst_dvd_read_src_create);
|
||||||
}
|
}
|
||||||
|
@ -761,6 +765,34 @@ gst_dvd_read_src_get_property (GObject * object, guint prop_id, GValue * value,
|
||||||
GST_OBJECT_UNLOCK (src);
|
GST_OBJECT_UNLOCK (src);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gst_dvd_read_src_seekable (GstBaseSrc * basesrc)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gst_dvd_read_src_get_size (GstBaseSrc * basesrc, guint64 * size)
|
||||||
|
{
|
||||||
|
GstDvdReadSrc *src = GST_DVD_READ_SRC (basesrc);
|
||||||
|
gboolean ret = FALSE;
|
||||||
|
|
||||||
|
if (src->dvd_title) {
|
||||||
|
gsize blocks;
|
||||||
|
|
||||||
|
blocks = DVDFileSize (src->dvd_title);
|
||||||
|
if (blocks >= 0) {
|
||||||
|
*size = (guint64) blocks *DVD_VIDEO_LB_LEN;
|
||||||
|
|
||||||
|
ret = TRUE;
|
||||||
|
} else {
|
||||||
|
GST_WARNING_OBJECT (src, "DVDFileSize(%p) failed!", src->dvd_title);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/*** Querying and seeking ***/
|
/*** Querying and seeking ***/
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
@ -857,6 +889,7 @@ gst_dvd_read_src_do_seek (GstDvdReadSrc * src, GstEvent * event)
|
||||||
src->chapter = 0;
|
src->chapter = 0;
|
||||||
src->seek_pend_fmt = format;
|
src->seek_pend_fmt = format;
|
||||||
} else {
|
} else {
|
||||||
|
GST_OBJECT_UNLOCK (src);
|
||||||
g_return_val_if_reached (FALSE);
|
g_return_val_if_reached (FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -950,7 +983,12 @@ gst_dvd_read_src_do_duration_query (GstDvdReadSrc * src, GstQuery * query)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case GST_FORMAT_BYTES:{
|
case GST_FORMAT_BYTES:{
|
||||||
val = DVDFileSize (src->dvd_title) * DVD_VIDEO_LB_LEN;
|
guint64 size;
|
||||||
|
|
||||||
|
if (!gst_dvd_read_src_get_size (GST_BASE_SRC (src), &size))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
val = (gint64) size;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:{
|
default:{
|
||||||
|
@ -971,6 +1009,9 @@ gst_dvd_read_src_do_duration_query (GstDvdReadSrc * src, GstQuery * query)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GST_LOG_OBJECT (src, "duration = %" G_GINT64_FORMAT " %s", val,
|
||||||
|
gst_format_get_name (format));
|
||||||
|
|
||||||
gst_query_set_duration (query, format, val);
|
gst_query_set_duration (query, format, val);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -1006,6 +1047,9 @@ gst_dvd_read_src_do_position_query (GstDvdReadSrc * src, GstQuery * query)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GST_LOG_OBJECT (src, "position = %" G_GINT64_FORMAT " %s", val,
|
||||||
|
gst_format_get_name (format));
|
||||||
|
|
||||||
gst_query_set_position (query, format, val);
|
gst_query_set_position (query, format, val);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue