mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-05-11 10:54:49 +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>
|
||||
|
||||
* configure.ac:
|
||||
|
|
|
@ -86,6 +86,8 @@ static void gst_dvd_read_src_get_property (GObject * object, guint prop_id,
|
|||
GValue * value, GParamSpec * pspec);
|
||||
static GstEvent *gst_dvd_read_src_make_clut_change_event (GstDvdReadSrc * src,
|
||||
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_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->query = GST_DEBUG_FUNCPTR (gst_dvd_read_src_src_query);
|
||||
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);
|
||||
}
|
||||
|
@ -761,6 +765,34 @@ gst_dvd_read_src_get_property (GObject * object, guint prop_id, GValue * value,
|
|||
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 ***/
|
||||
|
||||
static gboolean
|
||||
|
@ -857,6 +889,7 @@ gst_dvd_read_src_do_seek (GstDvdReadSrc * src, GstEvent * event)
|
|||
src->chapter = 0;
|
||||
src->seek_pend_fmt = format;
|
||||
} else {
|
||||
GST_OBJECT_UNLOCK (src);
|
||||
g_return_val_if_reached (FALSE);
|
||||
}
|
||||
|
||||
|
@ -950,7 +983,12 @@ gst_dvd_read_src_do_duration_query (GstDvdReadSrc * src, GstQuery * query)
|
|||
break;
|
||||
}
|
||||
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;
|
||||
}
|
||||
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);
|
||||
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);
|
||||
return TRUE;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue