cmml-seek-offset.c

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 cmml_skip_to_secs() 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:

00001 
00031 #include <stdio.h>
00032 
00033 #include <cmml.h>
00034 
00045 #define BUFSIZE 100000
00046 
00057 static int
00058 read_clip (CMML * cmml, const CMML_Clip * clip, void * user_data) {
00059   puts(clip->desc_text);
00060   return 0;
00061 }
00062 
00069 int main(int argc, char *argv[])
00070 {
00071   char *filename = NULL;
00072   CMML * doc;
00073   double seconds = 0.0;
00074   long n = 0;
00075 
00076   if (argc < 2) {
00077     fprintf (stderr, "Usage: %s <CMMLfile> <seconds>\n", argv[0]);
00078     exit (1);
00079   }
00080   filename = argv[1];
00081   if (argv[2]) seconds = atof(argv[2]);
00082 
00083   doc = cmml_open(filename);
00084  
00085   /* seek to time offset; if not found, to file end */
00086   cmml_skip_to_secs (doc, seconds);
00087 
00088   cmml_set_read_callbacks (doc, NULL, NULL, read_clip, NULL);
00089  
00090   while (((n = cmml_read (doc, BUFSIZE)) > 0));
00091    
00092   cmml_close(doc);
00093 
00094   return 0;
00095 }

Generated on Tue Feb 7 17:52:55 2006 for libcmml by  doxygen 1.4.6