\section{cmml-seek-offset.c}
{\bf Seeking to a temporal offset into a CMML file}

Sometimes you'll need to seek to a temporal offset in seconds into a CMML file. Note: The seconds offset is calculated with respect to the basetime attribute of the stream tag. libcmml provides an API for this functionality through the \doxyref{cmml\_\-skip\_\-to\_\-secs()}{p.}{cmml_8h_791ab0f11ae7617532aff97de349b2b7} function.

The procedure is illustrated in cmml-seek-offset.c, which seeks to an offset given in seconds and prints out the descriptions of all the following clips:



\begin{DocInclude}\begin{verbatim}
#include <stdio.h>

#include <cmml.h>

#define BUFSIZE 100000

static int
read_clip (CMML * cmml, const CMML_Clip * clip, void * user_data) {
  puts(clip->desc_text);
  return 0;
}

int main(int argc, char *argv[])
{
  char *filename = NULL;
  CMML * doc;
  double seconds = 0.0;
  long n = 0;

  if (argc < 2) {
    fprintf (stderr, "Usage: %s <CMMLfile> <seconds>\n", argv[0]);
    exit (1);
  }
  filename = argv[1];
  if (argv[2]) seconds = atof(argv[2]);

  doc = cmml_open(filename);
 
  /* seek to time offset; if not found, to file end */
  cmml_skip_to_secs (doc, seconds);

  cmml_set_read_callbacks (doc, NULL, NULL, read_clip, NULL);
 
  while (((n = cmml_read (doc, BUFSIZE)) > 0));
   
  cmml_close(doc);

  return 0;
}
\end{verbatim}
\end{DocInclude}
 