comparison libmpdemux/demux_ogg.c @ 11577:0645c0fc22bf

1000l
author alex
date Mon, 08 Dec 2003 11:11:32 +0000
parents 2c9e2da67647
children 5c55de920ac0
comparison
equal deleted inserted replaced
11576:2c9e2da67647 11577:0645c0fc22bf
1211 1211
1212 int demux_ogg_control(demuxer_t *demuxer,int cmd, void *arg){ 1212 int demux_ogg_control(demuxer_t *demuxer,int cmd, void *arg){
1213 ogg_demuxer_t* ogg_d = demuxer->priv; 1213 ogg_demuxer_t* ogg_d = demuxer->priv;
1214 ogg_stream_t* os; 1214 ogg_stream_t* os;
1215 float rate; 1215 float rate;
1216
1216 if(demuxer->video->id >= 0) { 1217 if(demuxer->video->id >= 0) {
1217 os = &ogg_d->subs[demuxer->video->id]; 1218 os = &ogg_d->subs[demuxer->video->id];
1218 rate = os->samplerate; 1219 rate = os->samplerate;
1219 } else { 1220 } else {
1220 os = &ogg_d->subs[demuxer->audio->id]; 1221 os = &ogg_d->subs[demuxer->audio->id];
1223 1224
1224 1225
1225 switch(cmd) { 1226 switch(cmd) {
1226 case DEMUXER_CTRL_GET_TIME_LENGTH: 1227 case DEMUXER_CTRL_GET_TIME_LENGTH:
1227 if (ogg_d->final_granulepos<=0) return DEMUXER_CTRL_DONTKNOW; 1228 if (ogg_d->final_granulepos<=0) return DEMUXER_CTRL_DONTKNOW;
1228 unsigned long length = ogg_d->final_granulepos / rate; 1229 *((unsigned long *)arg)=ogg_d->final_granulepos / rate;
1229 *((unsigned long *)arg)=length;
1230 return DEMUXER_CTRL_GUESS; 1230 return DEMUXER_CTRL_GUESS;
1231 1231
1232 case DEMUXER_CTRL_GET_PERCENT_POS: 1232 case DEMUXER_CTRL_GET_PERCENT_POS:
1233 if (ogg_d->final_granulepos<=0) return DEMUXER_CTRL_DONTKNOW; 1233 if (ogg_d->final_granulepos<=0) return DEMUXER_CTRL_DONTKNOW;
1234 *((int *)arg)=(int)( (os->lastpos*100) / ogg_d->final_granulepos); 1234 *((int *)arg)=(int)( (os->lastpos*100) / ogg_d->final_granulepos);