Logo Search packages:      
Sourcecode: libtheora version File versions

double theora_granule_time ( theora_state th,
ogg_int64_t  granulepos 
)

Convert a granulepos to absolute time in seconds. The granulepos is interpreted in the context of a given theora_state handle.

Parameters:
th A previously initialized theora_state handle (encode or decode)
granulepos The granulepos to convert.
Returns:
The absolute time in seconds corresponding to granulepos.
Return values:
-1 The given granulepos is invalid (ie. negative)

Definition at line 402 of file toplevel.c.

References theora_state::internal_decode, theora_state::internal_encode, and theora_granule_time().

Referenced by theora_granule_time().

                                                                   {
#if THEORA_SUPPORT_FLOAT
  CP_INSTANCE *cpi=(CP_INSTANCE *)(th->internal_encode);
  PB_INSTANCE *pbi=(PB_INSTANCE *)(th->internal_decode);

  if(cpi)pbi=&cpi->pb;

  if(granulepos>=0){
    ogg_int64_t iframe=granulepos>>pbi->keyframe_granule_shift;
    ogg_int64_t pframe=granulepos-(iframe<<pbi->keyframe_granule_shift);

    return (iframe+pframe)*
      ((double)pbi->info.fps_denominator/pbi->info.fps_numerator);

  }
#endif

  return(-1);
}


Generated by  Doxygen 1.6.0   Back to index