From: Charles 'B. K. <kr...@us...> - 2001-01-15 06:11:43
|
Update of /cvsroot/libdv/libdv In directory usw-pr-cvs1:/tmp/cvs-serv28526 Modified Files: ChangeLog Makefile.am NEWS YUY2.c YUY2.h YV12.c YV12.h audio.c dct.h display.c dv.c dv.h gasmoff.c idct_248.h parse.c parse.h place.c place.h playdv.c quant.h rgb.c vlc.h weighting.h Added Files: util.c util.h Log Message: More header file and include cleanups. Add exit() handler for Sys V shm leak (Xv). Add util.[ch] for helper functions; first being dv_popt_usage moved from dv.h. Minor cleanups. --- NEW FILE --- /* * util.c * * Copyright (C) Charles 'Buck' Krasic - January 2001 * * This file is part of libdv, a free DV (IEC 61834/SMPTE 314M) * decoder. * * libdv is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your * option) any later version. * * libdv is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * * The libdv homepage is http://libdv.sourceforge.net/. */ #include "util.h" #if HAVE_LIBPOPT void dv_opt_usage(poptContext con, struct poptOption *opt, gint num) { struct poptOption *o = opt + num; if(o->shortName && o->longName) { fprintf(stderr,"-%c, --%s", o->shortName, o->longName); } else if(o->shortName) { fprintf(stderr,"-%c", o->shortName); } else if(o->longName) { fprintf(stderr,"--%s", o->longName); } // if if(o->argDescrip) { fprintf(stderr, "=%s\n", o->argDescrip); } else { fprintf(stderr, ": invalid usage\n"); } // else exit(-1); } // dv_opt_usage #endif // HAVE_LIBPOPT --- NEW FILE --- /* * util.h * * Copyright (C) Charles 'Buck' Krasic - January 2001 * * This file is part of libdv, a free DV (IEC 61834/SMPTE 314M) * decoder. * * libdv is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your * option) any later version. * * libdv is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * * The libdv homepage is http://libdv.sourceforge.net/. */ #ifndef DV_UTIL_H #define DV_UTIL_H #include "dv_types.h" #ifdef __cplusplus extern "C" { #endif extern void dv_opt_usage(poptContext con, struct poptOption *opt, gint num); #ifdef __cplusplus } #endif #endif // DV_UTIL_H Index: ChangeLog =================================================================== RCS file: /cvsroot/libdv/libdv/ChangeLog,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -r1.9 -r1.10 *** ChangeLog 2001/01/08 22:05:15 1.9 --- ChangeLog 2001/01/15 06:11:34 1.10 *************** *** 1,2 **** --- 1,18 ---- + 2001-01-14 Charles 'Buck' Krasic <kr...@ac...> + * Add command line option interface to playdv, using popt. + + * Add more audio code structure; pre-emphasis, speed detection + (only play normal speed audio). + + * Header file re-structuring. Move types to new dv_types.h; + enclose declarations in extern "C" for C++ compatibility; + replace leading '_' from preprocessor symbols with 'DV_' + prefix. + + * Add exit() handler to avoid Sys V shmem leak with Xv. (Still + have to do SDL, and gtk). + + * Add _GNU_SOURCE define, enabling large (>2GB) file support. + 2001-01-08 Charles 'Buck' Krasic <kr...@ac...> Index: Makefile.am =================================================================== RCS file: /cvsroot/libdv/libdv/Makefile.am,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -r1.9 -r1.10 *** Makefile.am 2001/01/15 02:05:26 1.9 --- Makefile.am 2001/01/15 06:11:34 1.10 *************** *** 36,43 **** pkginclude_HEADERS= dv.h dv_types.h bitstream.h display.h bitstream.h oss.h libdv_la_SOURCES= dv.c dct.c idct_248.c weighting.c quant.c vlc.c place.c \ ! parse.c bitstream.c YUY2.c YV12.c rgb.c audio.c oss.c \ YUY2.h bitstream.h dv.h parse.h rgb.h \ YV12.h dct.h idct_248.h place.h vlc.h \ ! quant.h weighting.h audio.h rgb.h audio.h $(ASMS) libdv_la_LDFLAGS = -version-info 0:0:0 --- 36,43 ---- pkginclude_HEADERS= dv.h dv_types.h bitstream.h display.h bitstream.h oss.h libdv_la_SOURCES= dv.c dct.c idct_248.c weighting.c quant.c vlc.c place.c \ ! parse.c bitstream.c YUY2.c YV12.c rgb.c audio.c oss.c util.c \ YUY2.h bitstream.h dv.h parse.h rgb.h \ YV12.h dct.h idct_248.h place.h vlc.h \ ! quant.h weighting.h audio.h rgb.h audio.h util.h $(ASMS) libdv_la_LDFLAGS = -version-info 0:0:0 Index: NEWS =================================================================== RCS file: /cvsroot/libdv/libdv/NEWS,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** NEWS 2000/12/21 03:56:29 1.1 --- NEWS 2001/01/15 06:11:34 1.2 *************** *** 0 **** --- 1,8 ---- + The best place to keep up with events is to check the libdv mailing + lists: + + http://sourceforge.net/mail/?group_id=4393 + + NOTE: as of the time of writing, 1/14/2001, the libdv-dev archive is + not working. I'm trying to resolve it with sourceforge, but it is + frustratingly hard to get a response from them. Index: YUY2.c =================================================================== RCS file: /cvsroot/libdv/libdv/YUY2.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** YUY2.c 2000/12/21 03:56:29 1.4 --- YUY2.c 2001/01/15 06:11:34 1.5 *************** *** 28,39 **** * Lucke <lu...@be...> */ - #ifdef HAVE_CONFIG_H - #include <config.h> - #endif - - #include <glib.h> #include <stdlib.h> ! #include "dv.h" #include "YUY2.h" --- 28,34 ---- * Lucke <lu...@be...> */ #include <stdlib.h> ! #include "dv_types.h" #include "YUY2.h" Index: YUY2.h =================================================================== RCS file: /cvsroot/libdv/libdv/YUY2.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** YUY2.h 2001/01/15 02:05:26 1.4 --- YUY2.h 2001/01/15 06:11:34 1.5 *************** *** 44,47 **** --- 44,51 ---- * sampled, so it is better to convert that to YV12 format. */ + #ifdef __cplusplus + extern "C" { + #endif + extern void dv_YUY2_init(void); *************** *** 55,58 **** --- 59,66 ---- extern void dv_mb411_right_YUY2_mmx(dv_macroblock_t *mb, guchar *pixels, gint pitch); #endif // ARCH_X86 + + #ifdef __cplusplus + } + #endif #endif // DV_YUY2_H Index: YV12.c =================================================================== RCS file: /cvsroot/libdv/libdv/YV12.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** YV12.c 2001/01/08 08:31:05 1.4 --- YV12.c 2001/01/15 06:11:34 1.5 *************** *** 25,36 **** */ - #ifdef HAVE_CONFIG_H - #include <config.h> - #endif - - #include <glib.h> #include <stdlib.h> ! #include "dv.h" #include "YV12.h" --- 25,31 ---- */ #include <stdlib.h> ! #include "dv_types.h" #include "YV12.h" Index: YV12.h =================================================================== RCS file: /cvsroot/libdv/libdv/YV12.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** YV12.h 2001/01/15 02:05:26 1.4 --- YV12.h 2001/01/15 06:11:34 1.5 *************** *** 43,46 **** --- 43,50 ---- * upsample that to YUY2. */ + #ifdef __cplusplus + extern "C" { + #endif + extern void dv_YV12_init(void); *************** *** 52,55 **** --- 56,63 ---- extern void dv_mb420_YV12_mmx(dv_macroblock_t *mb, guchar **pixels, guint16 *pitches); #endif // ARCH_X86 + + #ifdef __cplusplus + } + #endif #endif /* DV_YV12_H */ Index: audio.c =================================================================== RCS file: /cvsroot/libdv/libdv/audio.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** audio.c 2001/01/15 02:05:26 1.4 --- audio.c 2001/01/15 06:11:34 1.5 *************** *** 33,37 **** #include <math.h> ! #include "dv.h" #include "audio.h" --- 33,37 ---- #include <math.h> ! #include "dv_types.h" #include "audio.h" Index: dct.h =================================================================== RCS file: /cvsroot/libdv/libdv/dct.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** dct.h 2001/01/15 02:05:26 1.4 --- dct.h 2001/01/15 06:11:34 1.5 *************** *** 34,37 **** --- 34,41 ---- change rgbtoyuv.S accordingly) */ + #ifdef __cplusplus + extern "C" { + #endif + void dct_init(void); /* Input is transposed ! */ *************** *** 41,44 **** --- 45,52 ---- #if BRUTE_FORCE_248 void idct_248(double *block); + #endif + + #ifdef __cplusplus + } #endif Index: display.c =================================================================== RCS file: /cvsroot/libdv/libdv/display.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -r1.10 -r1.11 *** display.c 2001/01/14 04:55:49 1.10 --- display.c 2001/01/15 06:11:34 1.11 *************** *** 28,44 **** * Stefan Lucke <lu...@be...> */ - #ifdef HAVE_CONFIG_H - #include <config.h> - #endif - - #include <glib.h> - #include <math.h> - #include "dv.h" - #include "display.h" #include <stdlib.h> #include <stdio.h> ! #include <unistd.h> #if HAVE_LIBXV #include <sys/ipc.h> --- 28,41 ---- * Stefan Lucke <lu...@be...> */ + #include <unistd.h> #include <stdlib.h> #include <stdio.h> ! #include <math.h> + #include "dv_types.h" + #include "util.h" + #include "display.h" + #if HAVE_LIBXV #include <sys/ipc.h> *************** *** 481,484 **** --- 478,489 ---- #endif // HAVE_SDL + static void + dv_display_exit_handler(int code, void *arg) + { + if(code && arg) { + dv_display_exit(arg); + } // if + } // dv_display_exit_handler + /* ---------------------------------------------------------------------------- *************** *** 587,590 **** --- 592,596 ---- ok: + on_exit(dv_display_exit_handler, dv_dpy); return(TRUE); Index: dv.c =================================================================== RCS file: /cvsroot/libdv/libdv/dv.c,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -r1.11 -r1.12 *** dv.c 2001/01/15 02:05:26 1.11 --- dv.c 2001/01/15 06:11:34 1.12 *************** *** 7,10 **** --- 7,11 ---- #include "dv.h" + #include "util.h" #include "dct.h" #include "audio.h" Index: dv.h =================================================================== RCS file: /cvsroot/libdv/libdv/dv.h,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -r1.16 -r1.17 *** dv.h 2001/01/15 02:05:26 1.16 --- dv.h 2001/01/15 06:11:34 1.17 *************** *** 39,71 **** #endif - #if HAVE_LIBPOPT - extern inline void - dv_opt_usage(poptContext con, struct poptOption *opt, gint num) - { - struct poptOption *o = opt + num; - if(o->shortName && o->longName) { - fprintf(stderr,"-%c, --%s", o->shortName, o->longName); - } else if(o->shortName) { - fprintf(stderr,"-%c", o->shortName); - } else if(o->longName) { - fprintf(stderr,"--%s", o->longName); - } // if - if(o->argDescrip) { - fprintf(stderr, "=%s\n", o->argDescrip); - } else { - fprintf(stderr, ": invalid usage\n"); - } // else - exit(-1); - } // dv_opt_usage - #endif // HAVE_LIBPOPT - /* Main API */ ! extern dv_decoder_t *dv_decoder_new(void); ! extern void dv_init(dv_decoder_t *dv); ! extern gint dv_parse_header(dv_decoder_t *dv, guchar *buffer); ! extern void dv_decode_full_frame(dv_decoder_t *dv, guchar *buffer, ! dv_color_space_t color_space, guchar **pixels, guint16 *pitches); ! ! extern gint dv_decode_full_audio(dv_decoder_t *dv, guchar *buffer, gint16 **outbufs); /* Low level API */ --- 39,51 ---- #endif /* Main API */ ! extern dv_decoder_t *dv_decoder_new (void); ! extern void dv_init (dv_decoder_t *dv); ! extern gint dv_parse_header (dv_decoder_t *dv, guchar *buffer); ! extern void dv_decode_full_frame(dv_decoder_t *dv, ! guchar *buffer, dv_color_space_t color_space, ! guchar **pixels, guint16 *pitches); ! extern gint dv_decode_full_audio(dv_decoder_t *dv, ! guchar *buffer, gint16 **outbufs); /* Low level API */ Index: gasmoff.c =================================================================== RCS file: /cvsroot/libdv/libdv/gasmoff.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -r1.5 -r1.6 *** gasmoff.c 2000/12/21 03:56:29 1.5 --- gasmoff.c 2001/01/15 06:11:34 1.6 *************** *** 1,14 **** - #include <glib.h> #include <stdio.h> ! #ifdef HAVE_CONFIG_H ! #include <config.h> ! #endif ! #include "bitstream.h" - #include "dv.h" - #include "vlc.h" - #include "parse.h" #define offsetof(S, M) \ --- 1,7 ---- #include <stdio.h> ! #include "dv_types.h" #include "bitstream.h" #define offsetof(S, M) \ Index: idct_248.h =================================================================== RCS file: /cvsroot/libdv/libdv/idct_248.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** idct_248.h 2001/01/15 02:05:26 1.2 --- idct_248.h 2001/01/15 06:11:34 1.3 *************** *** 30,35 **** --- 30,43 ---- #include "dv_types.h" + #ifdef __cplusplus + extern "C" { + #endif + extern void dv_dct_248_init(void); extern void dv_idct_248(dv_248_coeff_t *x248); + + #ifdef __cplusplus + } + #endif #endif // IDCT_248_H Index: parse.c =================================================================== RCS file: /cvsroot/libdv/libdv/parse.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -r1.14 -r1.15 *** parse.c 2001/01/15 02:05:26 1.14 --- parse.c 2001/01/15 06:11:34 1.15 *************** *** 25,42 **** */ - #ifdef HAVE_CONFIG_H - #include <config.h> - #endif - - #if HAVE_LIBPOPT - #include <popt.h> - #endif // HAVE_LIBPOPT - - #include <glib.h> #include <stdio.h> - #include <assert.h> #include "bitstream.h" - #include "dv.h" #include "vlc.h" #include "parse.h" --- 25,33 ---- */ #include <stdio.h> + #include "dv_types.h" + #include "util.h" #include "bitstream.h" #include "vlc.h" #include "parse.h" Index: parse.h =================================================================== RCS file: /cvsroot/libdv/libdv/parse.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -r1.5 -r1.6 *** parse.h 2001/01/15 02:05:26 1.5 --- parse.h 2001/01/15 06:11:34 1.6 *************** *** 30,36 **** #include "dv_types.h" extern dv_video_t *dv_video_new(void); ! extern void dv_parse_init(void); #endif // DV_PARSE_H --- 30,43 ---- #include "dv_types.h" + #ifdef __cplusplus + extern "C" { + #endif + extern dv_video_t *dv_video_new(void); + extern void dv_parse_init(void); ! #ifdef __cplusplus ! } ! #endif #endif // DV_PARSE_H Index: place.c =================================================================== RCS file: /cvsroot/libdv/libdv/place.c,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -r1.9 -r1.10 *** place.c 2000/12/21 03:56:29 1.9 --- place.c 2001/01/15 06:11:34 1.10 *************** *** 25,33 **** */ ! #ifdef HAVE_CONFIG_H ! #include <config.h> ! #endif ! ! #include "dv.h" #include "place.h" --- 25,29 ---- */ ! #include "dv_types.h" #include "place.h" Index: place.h =================================================================== RCS file: /cvsroot/libdv/libdv/place.h,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -r1.9 -r1.10 *** place.h 2001/01/15 02:05:26 1.9 --- place.h 2001/01/15 06:11:34 1.10 *************** *** 30,37 **** --- 30,45 ---- #include "dv_types.h" + #ifdef __cplusplus + extern "C" { + #endif + extern void dv_place_init(void); extern void dv_place_macroblock(dv_decoder_t *dv, dv_videosegment_t *seg, dv_macroblock_t *mb, gint m); extern void dv_place_video_segment(dv_decoder_t *dv, dv_videosegment_t *seg); extern void dv_place_frame(dv_decoder_t *dv, dv_frame_t *frame); + + #ifdef __cplusplus + } + #endif #endif // DV_PLACE_H Index: playdv.c =================================================================== RCS file: /cvsroot/libdv/libdv/playdv.c,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -r1.21 -r1.22 *** playdv.c 2001/01/15 02:05:26 1.21 --- playdv.c 2001/01/15 06:11:34 1.22 *************** *** 25,34 **** */ - #ifdef HAVE_CONFIG_H - #include <config.h> - #endif // HAVE_CONFIG_H - #include <stdlib.h> - #include <glib.h> #include <stdio.h> #include <sys/time.h> --- 25,29 ---- *************** *** 38,50 **** #include <sys/mman.h> #include <fcntl.h> - #if HAVE_LIBPOPT - #include <popt.h> - #endif // HAVE_LIBPOPT #include "dv.h" #include "display.h" #include "oss.h" - #include "bitstream.h" - #include "place.h" #define DV_PLAYER_OPT_VERSION 0 --- 33,41 ---- #include <sys/mman.h> #include <fcntl.h> + #include "dv_types.h" #include "dv.h" #include "display.h" #include "oss.h" #define DV_PLAYER_OPT_VERSION 0 *************** *** 260,272 **** dv_player->decoder->sampling, "playdv", "playdv")) goto no_display; } // if ! if(!dv_player->arg_disable_audio) { ! if(!dv_oss_init(dv_player->decoder->audio, dv_player->oss)) { ! dv_player->decoder->audio->num_channels = 0; ! } // if ! ! for(i=0; i < 4; i++) { ! if(!(audio_buffers[i] = malloc(DV_AUDIO_MAX_SAMPLES*sizeof(gint16)))) goto no_mem; ! } // for } // if --- 251,260 ---- dv_player->decoder->sampling, "playdv", "playdv")) goto no_display; } // if + + dv_player->arg_disable_audio = + dv_player->arg_disable_audio || (!dv_oss_init(dv_player->decoder->audio, dv_player->oss)); ! for(i=0; i < 4; i++) { ! if(!(audio_buffers[i] = malloc(DV_AUDIO_MAX_SAMPLES*sizeof(gint16)))) goto no_mem; } // if Index: quant.h =================================================================== RCS file: /cvsroot/libdv/libdv/quant.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** quant.h 2001/01/15 02:05:26 1.3 --- quant.h 2001/01/15 06:11:34 1.4 *************** *** 11,14 **** --- 11,18 ---- #include "dv_types.h" + #ifdef __cplusplus + extern "C" { + #endif + extern void quant_88(dv_coeff_t *block,int qno,int class); extern void quant_248(dv_coeff_t *block,int qno,int class); *************** *** 16,19 **** --- 20,27 ---- extern void quant_248_inverse(dv_coeff_t *block,int qno,int class); extern void quant_88_inverse_x86(dv_coeff_t *block,int qno,int class); + + #ifdef __cplusplus + } + #endif #endif // DV_QUANT_H Index: rgb.c =================================================================== RCS file: /cvsroot/libdv/libdv/rgb.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -r1.5 -r1.6 *** rgb.c 2001/01/08 08:23:28 1.5 --- rgb.c 2001/01/15 06:11:34 1.6 *************** *** 25,35 **** */ - #ifdef HAVE_CONFIG_H - #include <config.h> - #endif - #include <glib.h> #include <math.h> ! #include "dv.h" #define COLOR_FRACTION_BITS 10 --- 25,31 ---- */ #include <math.h> ! #include "dv_types.h" #define COLOR_FRACTION_BITS 10 Index: vlc.h =================================================================== RCS file: /cvsroot/libdv/libdv/vlc.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -r1.5 -r1.6 *** vlc.h 2001/01/15 02:05:26 1.5 --- vlc.h 2001/01/15 06:11:34 1.6 *************** *** 50,53 **** --- 50,57 ---- #endif + #ifdef __cplusplus + extern "C" { + #endif + extern const gint8 *dv_vlc_classes[17]; extern const gint dv_vlc_class_index_mask[17]; *************** *** 73,76 **** --- 77,84 ---- __dv_decode_vlc(bitstream_show(bs,16),result); } // dv_peek_vlc + + #ifdef __cplusplus + } + #endif #endif // DV_VLC_H Index: weighting.h =================================================================== RCS file: /cvsroot/libdv/libdv/weighting.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** weighting.h 2001/01/15 02:05:26 1.4 --- weighting.h 2001/01/15 06:11:34 1.5 *************** *** 30,33 **** --- 30,37 ---- #include "dv_types.h" + #ifdef __cplusplus + extern "C" { + #endif + void weight_init(void); void weight_88(dv_coeff_t *block); *************** *** 35,38 **** --- 39,46 ---- void weight_88_inverse(dv_coeff_t *block); void weight_248_inverse(dv_coeff_t *block); + + #ifdef __cplusplus + } + #endif #endif // DV_WEIGHTING_H |