libcmml: cmml-seek-utc.c

# cmml-seek-utc.c

Seeking to a utc time offset into a CMML file

Sometimes you'll need to seek to a temporal offset in utc into a CMML file. Note: The utc offset is calculated with respect to the utc and basetime attributes of the stream tag. libcmml provides an API for this functionality through the cmml_skip_to_utc() function.

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

    #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;
      char *utc = NULL;
      long n = 0;

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

      doc = cmml_open(filename);

      /* seek to time offset; if not found, to file end */
      cmml_skip_to_utc (doc, utc);

      cmml_set_read_callbacks (doc, NULL, NULL, read_clip, NULL);

      while (((n = cmml_read (doc, BUFSIZE)) > 0));

      cmml_close(doc);

      return 0;
    }