Mercurial > mplayer.hg
view TOOLS/360m_convert.c @ 17566:f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
patch replaces '()' for the correct '(void)' in function
declarations/prototypes which have no parameters. The '()' syntax tell
thats there is a variable list of arguments, so that the compiler cannot
check this. The extra CFLAG '-Wstrict-declarations' shows those cases.
Comments about a similar patch applied to ffmpeg:
That in C++ these mean the same, but in ANSI C the semantics are
different; function() is an (obsolete) K&R C style forward declaration,
it basically means that the function can have any number and any types
of parameters, effectively completely preventing the compiler from doing
any sort of type checking. -- Erik Slagter
Defining functions with unspecified arguments is allowed but bad.
With arguments unspecified the compiler can't report an error/warning
if the function is called with incorrect arguments. -- M\ns Rullg\rd
author | rathann |
---|---|
date | Thu, 09 Feb 2006 14:08:03 +0000 |
parents | 78f69659c797 |
children |
line wrap: on
line source
/** * convert D-Cinema Video (MPEG2 in GXF, SMPTE 360M) to a * MPEG-ES file that MPlayer can play (use -demuxer mpeges). * Usage: 360m_convert <infile> <outfile> */ #include <stdlib.h> #include <stdio.h> int main(int argc, char *argv[]) { FILE *in = fopen(argv[1], "r"); FILE *out = fopen(argv[2], "w"); int discard = 0; unsigned char buf[4]; if (!in) { printf("Could not open %s for reading\n", argv[1]); return EXIT_FAILURE; } if (!out) { printf("Could not open %s for writing\n", argv[2]); return EXIT_FAILURE; } fread(buf, 4, 1, in); do { if (buf[0] == 0 && buf[1] == 0 && buf[2] == 1) { // encountered a header // skip data between a 0xbf or 0xbc header and the next 0x00 header if (buf[3] == 0xbc || buf[3] == 0xbf) discard = 1; else if (buf[3] == 0) discard = 0; } if (!discard) fwrite(&buf[0], 1, 1, out); buf[0] = buf[1]; buf[1] = buf[2]; buf[2] = buf[3]; fread(&buf[3], 1, 1, in); } while (!feof(in)); return EXIT_SUCCESS; }