Mercurial > mplayer.hg
changeset 6200:e604be87613d
codecs.conf versioning - patch by Joey Parrish <joey@yunamusic.com>
author | arpi |
---|---|
date | Sun, 26 May 2002 22:39:38 +0000 |
parents | d4206ea88ffa |
children | f454e289070f |
files | DOCS/tech/codecs.conf.txt codec-cfg.c codec-cfg.h etc/codecs.conf |
diffstat | 4 files changed, 41 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/DOCS/tech/codecs.conf.txt Sun May 26 22:18:59 2002 +0000 +++ b/DOCS/tech/codecs.conf.txt Sun May 26 22:39:38 2002 +0000 @@ -33,6 +33,18 @@ human readers. For example, all of the open source decoders that MPlayer implements natively are grouped in one section. +Release Number +-------------- +Your codecs.conf now requires a release number to avoid codec release +incompatibilities. The format is simple: (YYYYMMDD) + +release 20020520 + +Whenever changes are made to the codecs that *require* an updated +codecs.conf, then MPlayer will no longer accept outdated versions. +It is not recommended to change this line unless you know exactly +what you are doing. + Video Codecs ------------ Let's jump right in with an example. Here is an example video codec block:
--- a/codec-cfg.c Sun May 26 22:18:59 2002 +0000 +++ b/codec-cfg.c Sun May 26 22:39:38 2002 +0000 @@ -368,10 +368,10 @@ static int line_num = 0; static char *line; static char *token[MAX_NR_TOKEN]; +static int read_nextline = 1; static int get_token(int min, int max) { - static int read_nextline = 1; static int line_pos; int i; char c; @@ -466,15 +466,33 @@ mp_msg(MSGT_CODECCFG,MSGL_FATAL,"can't get memory for 'line': %s\n", strerror(errno)); return 0; } + read_nextline = 1; /* - * check if the cfgfile starts with 'audiocodec' or - * with 'videocodec' + * this only catches release lines at the start of + * codecs.conf, before audiocodecs and videocodecs. */ while ((tmp = get_token(1, 1)) == RET_EOL) /* NOTHING */; if (tmp == RET_EOF) goto out; + if (!strcmp(token[0], "release")) { + if (get_token(1, 2) < 0) + goto err_out_parse_error; + tmp = atoi(token[0]); + if (tmp < CODEC_CFG_MIN) + goto err_out_release_num; + while ((tmp = get_token(1, 1)) == RET_EOL) + /* NOTHING */; + if (tmp == RET_EOF) + goto out; + } else + goto err_out_release_num; + + /* + * check if the next block starts with 'audiocodec' or + * with 'videocodec' + */ if (!strcmp(token[0], "audiocodec") || !strcmp(token[0], "videocodec")) goto loop_enter; goto err_out_parse_error; @@ -652,11 +670,15 @@ free(line); line=NULL; + line_num = 0; fclose(fp); return 0; err_out_not_valid: mp_msg(MSGT_CODECCFG,MSGL_ERR,"codec is not defined correctly"); goto err_out_print_linenum; +err_out_release_num: + mp_msg(MSGT_CODECCFG,MSGL_ERR,"this codecs.conf is too old, incompatible with this mplayer release!"); + goto err_out_print_linenum; } codecs_t *find_audio_codec(unsigned int fourcc, unsigned int *fourccmap,
--- a/codec-cfg.h Sun May 26 22:18:59 2002 +0000 +++ b/codec-cfg.h Sun May 26 22:39:38 2002 +0000 @@ -1,6 +1,8 @@ #ifndef __CODEC_CFG_H #define __CODEC_CFG_H +#define CODEC_CFG_MIN 20020520 + #define CODECS_MAX_FOURCC 32 #define CODECS_MAX_OUTFMT 16 #define CODECS_MAX_INFMT 16
--- a/etc/codecs.conf Sun May 26 22:18:59 2002 +0000 +++ b/etc/codecs.conf Sun May 26 22:39:38 2002 +0000 @@ -3,6 +3,8 @@ ; Before editing this file, please read DOCS/tech/codecs.conf.txt ! ;============================================================================= +release 20020520 + ;============================================================================= ; VIDEO CODECS ;=============================================================================