Move the time printing code out of the length property.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23434 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
albeu 2007-05-31 12:42:02 +00:00
parent 67341d23fa
commit be63729ba5
3 changed files with 30 additions and 22 deletions

View File

@ -283,28 +283,7 @@ static int mp_property_length(m_option_t * prop, int action, void *arg,
!(int) (len = demuxer_get_time_length(mpctx->demuxer)))
return M_PROPERTY_UNAVAILABLE;
switch (action) {
case M_PROPERTY_PRINT:
if (!arg)
return M_PROPERTY_ERROR;
else {
int h, m, s = len;
h = s / 3600;
s -= h * 3600;
m = s / 60;
s -= m * 60;
*(char **) arg = malloc(20);
if (h > 0)
sprintf(*(char **) arg, "%d:%02d:%02d", h, m, s);
else if (m > 0)
sprintf(*(char **) arg, "%d:%02d", m, s);
else
sprintf(*(char **) arg, "%d", s);
return M_PROPERTY_OK;
}
break;
}
return m_property_double_ro(prop, action, arg, len);
return m_property_time_ro(prop, action, arg, len);
}
/// Demuxer meta data

View File

@ -318,6 +318,31 @@ int m_property_double_ro(m_option_t* prop,int action,
return M_PROPERTY_NOT_IMPLEMENTED;
}
int m_property_time_ro(m_option_t* prop,int action,
void* arg,double var) {
switch(action) {
case M_PROPERTY_PRINT:
if (!arg)
return M_PROPERTY_ERROR;
else {
int h, m, s = var;
h = s / 3600;
s -= h * 3600;
m = s / 60;
s -= m * 60;
*(char **) arg = malloc(20);
if (h > 0)
sprintf(*(char **) arg, "%d:%02d:%02d", h, m, s);
else if (m > 0)
sprintf(*(char **) arg, "%d:%02d", m, s);
else
sprintf(*(char **) arg, "%d", s);
return M_PROPERTY_OK;
}
}
return m_property_double_ro(prop,action,arg,var);
}
int m_property_string_ro(m_option_t* prop,int action,void* arg,char* str) {
switch(action) {
case M_PROPERTY_GET:

View File

@ -185,6 +185,10 @@ int m_property_delay(m_option_t* prop,int action,
int m_property_double_ro(m_option_t* prop,int action,
void* arg,double var);
/// Implement print
int m_property_time_ro(m_option_t* prop,int action,
void* arg,double var);
/// get/print the string
int m_property_string_ro(m_option_t* prop,int action,void* arg, char* str);