Added pad_query with percent format on filesrc and some constants

Original commit message from CVS:
Added pad_query with percent format on filesrc and some constants
This commit is contained in:
Wim Taymans 2002-12-22 14:03:09 +00:00
parent 74d9fe06f9
commit 155369d80c
3 changed files with 26 additions and 6 deletions

View file

@ -745,10 +745,18 @@ gst_filesrc_srcpad_query (GstPad *pad, GstPadQueryType type,
*value = src->filelen;
break;
case GST_PAD_QUERY_POSITION:
if (*format != GST_FORMAT_BYTES) {
return FALSE;
switch (*format) {
case GST_FORMAT_BYTES:
*value = src->curoffset;
break;
case GST_FORMAT_PERCENT:
if (src->filelen == 0)
return FALSE;
*value = src->curoffset * GST_FORMAT_PERCENT_MAX / src->filelen;
break;
default:
return FALSE;
}
*value = src->curoffset;
break;
default:
return FALSE;

View file

@ -40,6 +40,10 @@ typedef enum {
GST_FORMAT_UNITS = 6
} GstFormat;
/* a percentage is always relative to 1000000 */
#define GST_FORMAT_PERCENT_MAX 1000000LL
#define GST_FORMAT_PERCENT_SCALE 10000LL
typedef struct _GstFormatDefinition GstFormatDefinition;
struct _GstFormatDefinition

View file

@ -745,10 +745,18 @@ gst_filesrc_srcpad_query (GstPad *pad, GstPadQueryType type,
*value = src->filelen;
break;
case GST_PAD_QUERY_POSITION:
if (*format != GST_FORMAT_BYTES) {
return FALSE;
switch (*format) {
case GST_FORMAT_BYTES:
*value = src->curoffset;
break;
case GST_FORMAT_PERCENT:
if (src->filelen == 0)
return FALSE;
*value = src->curoffset * GST_FORMAT_PERCENT_MAX / src->filelen;
break;
default:
return FALSE;
}
*value = src->curoffset;
break;
default:
return FALSE;