mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-04 13:32:29 +00:00
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:
parent
74d9fe06f9
commit
155369d80c
3 changed files with 26 additions and 6 deletions
|
@ -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) {
|
||||
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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
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;
|
||||
|
|
Loading…
Reference in a new issue