libavformat/sbgdec.c File Reference

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "libavutil/intreadwrite.h"
#include "libavutil/log.h"
#include "libavutil/opt.h"
#include "avformat.h"
#include "internal.h"

Go to the source code of this file.

Data Structures

struct  sbg_demuxer
struct  sbg_string
struct  sbg_fade
struct  sbg_timestamp
struct  sbg_script_definition
struct  sbg_script_synth
struct  sbg_script_tseq
struct  sbg_script_event
struct  sbg_script
struct  sbg_parser
struct  ws_interval
struct  ws_intervals

Defines

#define SBG_SCALE   (1 << 16)
#define DAY   (24 * 60 * 60)
#define DAY_TS   ((int64_t)DAY * AV_TIME_BASE)
#define FORWARD_ERROR(c)
#define ADD_EDATA32(v)   do { AV_WL32(edata, (v)); edata += 4; } while(0)
#define ADD_EDATA64(v)   do { AV_WL64(edata, (v)); edata += 8; } while(0)

Enumerations

enum  sbg_fade_type { SBG_FADE_SILENCE = 0, SBG_FADE_SAME = 1, SBG_FADE_ADAPT = 3 }
enum  sbg_synth_type {
  SBG_TYPE_NONE, SBG_TYPE_SINE, SBG_TYPE_NOISE, SBG_TYPE_BELL,
  SBG_TYPE_MIX, SBG_TYPE_SPIN
}
enum  ws_interval_type { WS_SINE = MKTAG('S','I','N','E'), WS_NOISE = MKTAG('N','O','I','S'), WS_SINE = MKTAG('S','I','N','E'), WS_NOISE = MKTAG('N','O','I','S') }

Functions

static void * alloc_array_elem (void **array, size_t elsize, int *size, int *max_size)
static int str_to_time (const char *str, int64_t *rtime)
static int is_space (char c)
static int scale_double (void *log, double d, double m, int *r)
static int lex_space (struct sbg_parser *p)
static int lex_char (struct sbg_parser *p, char c)
static int lex_double (struct sbg_parser *p, double *r)
static int lex_fixed (struct sbg_parser *p, const char *t, int l)
static int lex_line_end (struct sbg_parser *p)
static int lex_wsword (struct sbg_parser *p, struct sbg_string *rs)
static int lex_name (struct sbg_parser *p, struct sbg_string *rs)
static int lex_time (struct sbg_parser *p, int64_t *rt)
static int parse_immediate (struct sbg_parser *p)
static int parse_preprogrammed (struct sbg_parser *p)
static int parse_optarg (struct sbg_parser *p, char o, struct sbg_string *r)
static int parse_options (struct sbg_parser *p)
static int parse_timestamp (struct sbg_parser *p, struct sbg_timestamp *rts, int64_t *rrel)
static int parse_fade (struct sbg_parser *p, struct sbg_fade *fr)
static int parse_time_sequence (struct sbg_parser *p, int inblock)
static int parse_wave_def (struct sbg_parser *p, int wavenum)
static int parse_block_def (struct sbg_parser *p, struct sbg_script_definition *def)
static int parse_volume (struct sbg_parser *p, int *vol)
static int parse_synth_channel_sine (struct sbg_parser *p, struct sbg_script_synth *synth)
static int parse_synth_channel_pink (struct sbg_parser *p, struct sbg_script_synth *synth)
static int parse_synth_channel_bell (struct sbg_parser *p, struct sbg_script_synth *synth)
static int parse_synth_channel_mix (struct sbg_parser *p, struct sbg_script_synth *synth)
static int parse_synth_channel_spin (struct sbg_parser *p, struct sbg_script_synth *synth)
static int parse_synth_channel (struct sbg_parser *p)
static int parse_synth_def (struct sbg_parser *p, struct sbg_script_definition *def)
static int parse_named_def (struct sbg_parser *p)
static void free_script (struct sbg_script *s)
static int parse_script (void *log, char *script, int script_len, struct sbg_script *rscript)
static int read_whole_file (AVIOContext *io, int max_size, char **rbuf)
static void expand_timestamps (void *log, struct sbg_script *s)
static int expand_tseq (void *log, struct sbg_script *s, int *nb_ev_max, int64_t t0, struct sbg_script_tseq *tseq)
static int expand_script (void *log, struct sbg_script *s)
static int add_interval (struct ws_intervals *inter, enum ws_interval_type type, uint32_t channels, int ref, int64_t ts1, int32_t f1, int32_t a1, int64_t ts2, int32_t f2, int32_t a2)
static int add_bell (struct ws_intervals *inter, struct sbg_script *s, int64_t ts1, int64_t ts2, int32_t f, int32_t a)
static int generate_interval (void *log, struct sbg_script *s, struct ws_intervals *inter, int64_t ts1, int64_t ts2, struct sbg_script_synth *s1, struct sbg_script_synth *s2, int transition)
static int generate_plateau (void *log, struct sbg_script *s, struct ws_intervals *inter, struct sbg_script_event *ev1)
static int generate_transition (void *log, struct sbg_script *s, struct ws_intervals *inter, struct sbg_script_event *ev1, struct sbg_script_event *ev2)
static int generate_intervals (void *log, struct sbg_script *s, int sample_rate, struct ws_intervals *inter)
static int encode_intervals (struct sbg_script *s, AVCodecContext *avc, struct ws_intervals *inter)
static av_cold int sbg_read_probe (AVProbeData *p)
static av_cold int sbg_read_header (AVFormatContext *avf)
static int sbg_read_packet (AVFormatContext *avf, AVPacket *packet)
static int sbg_read_seek2 (AVFormatContext *avf, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags)
static int sbg_read_seek (AVFormatContext *avf, int stream_index, int64_t ts, int flags)

Variables

static const AVOption sbg_options []
static const AVClass sbg_demuxer_class
AVInputFormat ff_sbg_demuxer


Define Documentation

#define ADD_EDATA32 (  )     do { AV_WL32(edata, (v)); edata += 4; } while(0)

Referenced by encode_intervals().

#define ADD_EDATA64 (  )     do { AV_WL64(edata, (v)); edata += 8; } while(0)

Referenced by encode_intervals().

#define DAY   (24 * 60 * 60)

Definition at line 32 of file sbgdec.c.

Referenced by expand_timestamps().

#define DAY_TS   ((int64_t)DAY * AV_TIME_BASE)

Definition at line 33 of file sbgdec.c.

Referenced by expand_timestamps(), and generate_intervals().

#define FORWARD_ERROR ( c   ) 

Value:

do { \
        int errcode = c; \
        if (errcode <= 0) \
            return errcode ? errcode : AVERROR_INVALIDDATA; \
    } while(0);

Definition at line 314 of file sbgdec.c.

Referenced by parse_options(), parse_synth_channel_bell(), parse_synth_channel_mix(), parse_synth_channel_pink(), parse_synth_channel_sine(), and parse_synth_channel_spin().

#define SBG_SCALE   (1 << 16)

Definition at line 31 of file sbgdec.c.

Referenced by scale_double().


Enumeration Type Documentation

Enumerator:
SBG_FADE_SILENCE 
SBG_FADE_SAME 
SBG_FADE_ADAPT 

Definition at line 47 of file sbgdec.c.

Enumerator:
SBG_TYPE_NONE 
SBG_TYPE_SINE 
SBG_TYPE_NOISE 
SBG_TYPE_BELL 
SBG_TYPE_MIX 
SBG_TYPE_SPIN 

Definition at line 57 of file sbgdec.c.

Enumerator:
WS_SINE 
WS_NOISE 
WS_SINE 
WS_NOISE 

Definition at line 137 of file sbgdec.c.


Function Documentation

static int add_bell ( struct ws_intervals inter,
struct sbg_script s,
int64_t  ts1,
int64_t  ts2,
int32_t  f,
int32_t  a 
) [static]

Definition at line 1037 of file sbgdec.c.

Referenced by generate_interval().

static int add_interval ( struct ws_intervals inter,
enum ws_interval_type  type,
uint32_t  channels,
int  ref,
int64_t  ts1,
int32_t  f1,
int32_t  a1,
int64_t  ts2,
int32_t  f2,
int32_t  a2 
) [static]

Definition at line 1003 of file sbgdec.c.

Referenced by add_bell(), and generate_interval().

static void* alloc_array_elem ( void **  array,
size_t  elsize,
int *  size,
int *  max_size 
) [static]

static int encode_intervals ( struct sbg_script s,
AVCodecContext avc,
struct ws_intervals inter 
) [static]

Definition at line 1324 of file sbgdec.c.

Referenced by sbg_read_header().

static int expand_script ( void *  log,
struct sbg_script s 
) [static]

Definition at line 984 of file sbgdec.c.

Referenced by sbg_read_header().

static void expand_timestamps ( void *  log,
struct sbg_script s 
) [static]

Definition at line 886 of file sbgdec.c.

Referenced by expand_script().

static int expand_tseq ( void *  log,
struct sbg_script s,
int *  nb_ev_max,
int64_t  t0,
struct sbg_script_tseq tseq 
) [static]

Definition at line 940 of file sbgdec.c.

Referenced by expand_script().

static void free_script ( struct sbg_script s  )  [static]

Definition at line 781 of file sbgdec.c.

Referenced by parse_script(), sbg_read_header(), and sbg_read_probe().

static int generate_interval ( void *  log,
struct sbg_script s,
struct ws_intervals inter,
int64_t  ts1,
int64_t  ts2,
struct sbg_script_synth s1,
struct sbg_script_synth s2,
int  transition 
) [static]

Definition at line 1065 of file sbgdec.c.

Referenced by generate_plateau(), and generate_transition().

static int generate_intervals ( void *  log,
struct sbg_script s,
int  sample_rate,
struct ws_intervals inter 
) [static]

Definition at line 1259 of file sbgdec.c.

Referenced by sbg_read_header().

static int generate_plateau ( void *  log,
struct sbg_script s,
struct ws_intervals inter,
struct sbg_script_event ev1 
) [static]

Definition at line 1144 of file sbgdec.c.

Referenced by generate_intervals().

static int generate_transition ( void *  log,
struct sbg_script s,
struct ws_intervals inter,
struct sbg_script_event ev1,
struct sbg_script_event ev2 
) [static]

Definition at line 1173 of file sbgdec.c.

Referenced by generate_intervals().

static int is_space ( char  c  )  [inline, static]

Definition at line 203 of file sbgdec.c.

Referenced by lex_double(), lex_space(), and lex_wsword().

static int lex_char ( struct sbg_parser p,
char  c 
) [static]

static int lex_double ( struct sbg_parser p,
double *  r 
) [static]

static int lex_fixed ( struct sbg_parser p,
const char *  t,
int  l 
) [static]

static int lex_line_end ( struct sbg_parser p  )  [static]

static int lex_name ( struct sbg_parser p,
struct sbg_string rs 
) [static]

Definition at line 293 of file sbgdec.c.

Referenced by parse_named_def(), and parse_time_sequence().

static int lex_space ( struct sbg_parser p  )  [static]

static int lex_time ( struct sbg_parser p,
int64_t *  rt 
) [static]

Definition at line 307 of file sbgdec.c.

Referenced by parse_timestamp().

static int lex_wsword ( struct sbg_parser p,
struct sbg_string rs 
) [static]

Definition at line 279 of file sbgdec.c.

Referenced by parse_optarg(), and parse_options().

static int parse_block_def ( struct sbg_parser p,
struct sbg_script_definition def 
) [static]

Definition at line 573 of file sbgdec.c.

Referenced by parse_named_def().

static int parse_fade ( struct sbg_parser p,
struct sbg_fade fr 
) [static]

Definition at line 489 of file sbgdec.c.

Referenced by parse_time_sequence().

static int parse_immediate ( struct sbg_parser p  )  [static]

Definition at line 321 of file sbgdec.c.

Referenced by parse_options().

static int parse_named_def ( struct sbg_parser p  )  [static]

Definition at line 754 of file sbgdec.c.

Referenced by parse_script().

static int parse_optarg ( struct sbg_parser p,
char  o,
struct sbg_string r 
) [static]

Definition at line 335 of file sbgdec.c.

Referenced by parse_options().

static int parse_options ( struct sbg_parser p  )  [static]

Definition at line 345 of file sbgdec.c.

static int parse_preprogrammed ( struct sbg_parser p  )  [static]

Definition at line 328 of file sbgdec.c.

Referenced by parse_options().

static int parse_script ( void *  log,
char *  script,
int  script_len,
struct sbg_script rscript 
) [static]

Definition at line 791 of file sbgdec.c.

Referenced by sbg_read_header(), and sbg_read_probe().

static int parse_synth_channel ( struct sbg_parser p  )  [static]

Definition at line 704 of file sbgdec.c.

Referenced by parse_synth_def().

static int parse_synth_channel_bell ( struct sbg_parser p,
struct sbg_script_synth synth 
) [static]

Definition at line 649 of file sbgdec.c.

Referenced by parse_synth_channel().

static int parse_synth_channel_mix ( struct sbg_parser p,
struct sbg_script_synth synth 
) [static]

Definition at line 668 of file sbgdec.c.

Referenced by parse_synth_channel().

static int parse_synth_channel_pink ( struct sbg_parser p,
struct sbg_script_synth synth 
) [static]

Definition at line 636 of file sbgdec.c.

Referenced by parse_synth_channel().

static int parse_synth_channel_sine ( struct sbg_parser p,
struct sbg_script_synth synth 
) [static]

Definition at line 615 of file sbgdec.c.

Referenced by parse_synth_channel().

static int parse_synth_channel_spin ( struct sbg_parser p,
struct sbg_script_synth synth 
) [static]

Definition at line 681 of file sbgdec.c.

Referenced by parse_synth_channel().

static int parse_synth_def ( struct sbg_parser p,
struct sbg_script_definition def 
) [static]

Definition at line 730 of file sbgdec.c.

Referenced by parse_named_def().

static int parse_time_sequence ( struct sbg_parser p,
int  inblock 
) [static]

Definition at line 513 of file sbgdec.c.

Referenced by parse_block_def(), and parse_script().

static int parse_timestamp ( struct sbg_parser p,
struct sbg_timestamp rts,
int64_t *  rrel 
) [static]

Definition at line 458 of file sbgdec.c.

Referenced by parse_time_sequence().

static int parse_volume ( struct sbg_parser p,
int *  vol 
) [static]

static int parse_wave_def ( struct sbg_parser p,
int  wavenum 
) [static]

Definition at line 566 of file sbgdec.c.

Referenced by parse_named_def().

static int read_whole_file ( AVIOContext io,
int  max_size,
char **  rbuf 
) [static]

Definition at line 853 of file sbgdec.c.

Referenced by sbg_read_header().

static av_cold int sbg_read_header ( AVFormatContext avf  )  [static]

Definition at line 1381 of file sbgdec.c.

static int sbg_read_packet ( AVFormatContext avf,
AVPacket packet 
) [static]

Definition at line 1445 of file sbgdec.c.

static av_cold int sbg_read_probe ( AVProbeData p  )  [static]

Definition at line 1369 of file sbgdec.c.

static int sbg_read_seek ( AVFormatContext avf,
int  stream_index,
int64_t  ts,
int  flags 
) [static]

Definition at line 1476 of file sbgdec.c.

static int sbg_read_seek2 ( AVFormatContext avf,
int  stream_index,
int64_t  min_ts,
int64_t  ts,
int64_t  max_ts,
int  flags 
) [static]

Definition at line 1465 of file sbgdec.c.

Referenced by sbg_read_seek().

static int scale_double ( void *  log,
double  d,
double  m,
int *  r 
) [inline, static]

static int str_to_time ( const char *  str,
int64_t *  rtime 
) [static]

Definition at line 177 of file sbgdec.c.

Referenced by lex_time(), and parse_options().


Variable Documentation

Initial value:

 {
    .name           = "sbg",
    .long_name      = NULL_IF_CONFIG_SMALL("SBaGen binaural beats script"),
    .priv_data_size = sizeof(struct sbg_demuxer),
    .read_probe     = sbg_read_probe,
    .read_header    = sbg_read_header,
    .read_packet    = sbg_read_packet,
    .read_seek      = sbg_read_seek,
    .read_seek2     = sbg_read_seek2,
    .extensions     = "sbg",
    .priv_class     = &sbg_demuxer_class,
}

Definition at line 1502 of file sbgdec.c.

const AVClass sbg_demuxer_class [static]

Initial value:

 {
    .class_name = "sbg_demuxer",
    .item_name  = av_default_item_name,
    .option     = sbg_options,
    .version    = LIBAVUTIL_VERSION_INT,
}

Definition at line 1495 of file sbgdec.c.

const AVOption sbg_options[] [static]

Initial value:

 {
    { "sample_rate", "", 0x42,
      AV_OPT_TYPE_INT, { .dbl = 0 }, 0, INT_MAX,
      AV_OPT_FLAG_DECODING_PARAM },
    { "frame_size", "", 0x42,
      AV_OPT_TYPE_INT, { .dbl = 0 }, 0, INT_MAX,
      AV_OPT_FLAG_DECODING_PARAM },
    { "max_file_size", "", 0x42,
      AV_OPT_TYPE_INT, { .dbl = 5000000 }, 0, INT_MAX,
      AV_OPT_FLAG_DECODING_PARAM },
    { NULL },
}

Definition at line 1482 of file sbgdec.c.


Generated on Fri Oct 26 02:48:02 2012 for FFmpeg by  doxygen 1.5.8