libcmml: cmml-timeshift.c File Reference

# cmml-timeshift.c File Reference

`#include <config.h>`
`#include <stdio.h>`
`#include <stdlib.h>`
`#include <string.h>`
`#include <ctype.h>`
`#include <fcntl.h>`
`#include <errno.h>`
`#include <unistd.h>`
`#include <cmml.h>`

## Defines
#define | BUFSIZE 100000
## Functions
static void | PrintUsage (char *prog)
static int | read_stream (CMML *cmml, const CMML_Stream *stream, void *user_data)
static int | read_head (CMML *cmml, const CMML_Head *head, void *user_data)
static int | read_clip (CMML *cmml, const CMML_Clip *clip, void *user_data)
int | main (int argc, char *argv[])
## Variables
static FILE * | outfile
static double | secs

## Detailed Description

cmml-timeshift: parses a CMML instance document and applies a timeshift to all the clip tags.

    Usage: cmml-timeshift [options] filename
    Apply a timeshift to all the clip tags.

    Possible options:
      -s offset, --sec offset
                     Specify the offset in seconds to add to clip tags
      -o filename, --output filename
                     Specify the output filename. The file is written
                     to standard output by default.
      -h, --help     Display this help information
      -v, --version  Display version information

## Define Documentation

#define BUFSIZE 100000

the size of the print buffer

## Function Documentation

static void PrintUsage | ( | char * | prog | ) | `[static]`

PrintUsage: prints out help on how to use this program

Parameters:

  | prog | the program's name

static int read_stream | ( | CMML * | cmml,
|  | const CMML_Stream * | stream,
|  | void * | user_data |
| ) |  |  | `[static]`

read_stream: the callback for a stream element

Parameters:

  | cmml | the CMML* handle in use
  | stream | the stream element's content represented in a CMML_Stream*
  | user_data | user defined data

Returns:
  0 on success, 1 on error

References BUFSIZE, cmml_error_snprint(), cmml_get_last_error(), cmml_stream_pretty_snprint(), and outfile.

static int read_head | ( | CMML * | cmml,
|  | const CMML_Head * | head,
|  | void * | user_data |
| ) |  |  | `[static]`

read_head: the callback for a head element

Parameters:

  | cmml | the CMML* handle in use
  | head | the head element's content represented in a CMML_Head*
  | user_data | user defined data

Returns:
  0 on success, 1 on error

References BUFSIZE, cmml_error_snprint(), cmml_get_last_error(), cmml_head_pretty_snprint(), and outfile.

static int read_clip | ( | CMML * | cmml,
|  | const CMML_Clip * | clip,
|  | void * | user_data |
| ) |  |  | `[static]`

read_clip: the callback for a clip element

Parameters:

  | cmml | the CMML* handle in use
  | clip | the clip element's content represented in a CMML_Clip*
  | user_data | user defined data

Returns:
  0 on success, 1 on error

References BUFSIZE, cmml_clip_clone(), cmml_clip_destroy(), cmml_clip_pretty_snprint(), cmml_error_snprint(), cmml_get_last_error(), cmml_sec_parse(), cmml_time_free(), cmml_time_new_secs(), CMML_Clip::end_time, outfile, CMML_Time::sec, secs, CMML_Clip::start_time, CMML_Time::t, and CMML_Time::tstr.

int main | ( | int | argc,
|  | char * | argv[] |
| ) |  |  |

main function of cmml-timeshift, which opens the CMML file, seeks to any given offsets, registers the callbacks, and then steps through the file in chunks of BUFSIZE size, during which the callbacks get activated as the relevant elements get parsed.

References BUFSIZE, cmml_close(), CMML_EOF, cmml_error_snprint(), cmml_get_last_error(), cmml_get_preamble(), cmml_new(), cmml_open(), cmml_preamble_snprint(), cmml_read(), cmml_set_read_callbacks(), cmml_set_sloppy(), outfile, PrintUsage(), read_clip(), read_head(), read_stream(), secs, and CMML_Error::type.

## Variable Documentation

FILE* outfile`[static]`

outfile: defines FILE pointer to print output to

double secs`[static]`

secs: number of seconds to offset the clip start/end times

Examples:
  cmml-validate.c.

Referenced by main(), and read_clip().