Share

Zapping, a Gnome TV viewer

File Release Notes and Changelog

Release Name: 0.7.1

Notes:
This time we have three major improvements: Zapping now runs on FreeBSD
using the bktr driver, missing only support for remote controls and
recording. Again it also runs on Solaris using XVideo, fixes courtesy
of Roger Fuji. Finally Xinerama is supported in all display modes.
In the minor improvements category the Teletext mode now shows a second
toolbar instead of squeezing more buttons into the primary toolbar.

Important bug fixes:
- Using V4L2 (Linux 2.6) there is now a working audio mode
  (mono, stereo, SAP) control.
- Position of subtitles in fullscreen mode was wrong.
- Alirc VOL_UP/DOWN did not work.


Changes: 2004-09-13 <mschimek@users.sf.net> * Release 0.7.1. 2004-09-13 <mschimek@users.sf.net> * src/x11stuff.c (x11_vidmode_switch): No-Vidmode fix. * src/zmisc.c (zmisc_switch_mode): Fixed previous_mode. * help/C/zapping.xml: Version number update. * src/fullscreen.c: Vidmode fixes. * src/zmisc.c (zmisc_switch_mode): Teletext tool button fix. * libtv/screen.c: Made sure screens have a pixfmt without DGA. (dga_query): If possible try to determine screen pixfmt from XDGAModes, don't guess bpp 16, more sanity checks. No-DGA fix. 2004-09-11 <mschimek@users.sf.net> * src/main.c (main), libtv/screen.c (dga_query), zapping_setup_fb/zapping_setup_fb.c (main): Accept only --bpp 24 or 32. 2004-09-09 <mschimek@users.sf.net> * src/interface.c (create_zapping): Create a Zapping instance instead of GnomeApp for modularity. * zapping_setup_fb/zapping_setup_fb.h: Rewrote using Xinerama aware libtv routines. * zapping_setup_fb/zapping_setup_fb.c: Rewrote using Xinerama aware libtv routines. Added new --screen option to select the exact physical screen in Xinerama configuration. * zapping_setup_fb/v4l25.c, zapping_setup_fb/v4l2.c, zapping_setup_fb/v4l.c: Switched from old x11_dga_parameters to tv_overlay_buffer. * zapping_setup_fb/dga.c: Replaced by Xinerama aware libtv routines. * zapping_setup_fb/Makefile.am: Removed dga.c, added internal libtv dependency. * src/zmisc.h: Added CONST_PARENT and _unused_ attribute. Added some useful constants to improve code documentation. (z_set_overlay_buffer): New helper to set overlay buffer from display and screen number (Xinerama). * src/zmisc.c: Added functions to translate obsolete tveng_capture_mode which is still used in zapping conf. (zmisc_switch_mode): Cleaned up overlay and fullscreen code. (z_set_overlay_buffer): New helper to set overlay buffer from display and screen number (Xinerama). * src/zconf.h, src/zconf.c: Replaced zc/zconf _integer functions by _int and _uint for proper type checks. * src/x11_stuff.h, src/x11_stuff.c: Added functions to ask WM for fullscreen display of window. Rewrote x11_vidmode routines to consider display and physical screen number, size and position for proper Xinerama support. DGA routines merged with new Xinerama routines and moved to libtv for zapping_setup_fb. (x11_window_clip_vector): Used to create clips outside overlay rectangle when it did not align with containing window, fixed. * src/tvengxv.c (p_tvengxv_open_device): Use given window, i.e. physical screen, to query adaptors. Removed unused overlay_window functions. * src/tveng1.c, src/tveng2.c, src/tveng25.c (set_overlay_window): Function now takes a clip_vector parameter, puts window relative to overlay_buffer origin (Xinerama), cleaned up. * src/tvengbktr.c (set_clips): Function now takes a clip_vector parameter, puts window relative to overlay_buffer origin (Xinerama). Cleaned up and simplified things after moving clip checks to tveng.c. * src/tveng.h: Moved tv_bool, tv_pixfmt, tv_image_format, tv_overlay_buffer to libtv for zapping_setup_fb. Moved tv_clip_vector to libtv. X window pointers in tv_window no longer used, removed. * src/tveng.c: Public functions clear the error string on entry. In overlay mode, do not expect the driver can handle an invisible overlay window. Moved tv_pixfmt routines to libtv for zapping_setup_fb. (p_tveng_set_preview): dga_param is gone, now the overlay buffer must be any one of the physical screens (Xinerama). (p_tveng_set_preview_window): Check that clips stay within overlay buffer and window bounds. Check that clips are valid and in proper order. (tv_set_overlay_buffer): Added display_name and screen_number parameters so we can tell zapping_setup_fb the exact physical screen (Xinerama). (tveng_device_attach): Added window parameter to open only Xv drivers which can put video onto that physical screen. * src/remote.h, src/remote.c: Added PyArg_ParseTuple wrapper with proper const args. * src/main.c (main): Query and report physical X screens (Xinerama). * src/globals.h, src/globals.c: Added list of physical X screens (Xinerama). * src/overlay.c: Rewrote for Xinerama (choose the right physical screen initially and on window motion, clean only the ps we DMA'ed, open right Xv driver). * src/fullscreen.c: Rewrote for Xinerama (choose the right physical screen, use ps vidmodes instead of virtual screen, limit black window size to ps size, open right Xv driver). Use NET_WM_STATE_FULLSCREEN, since the old hack does not work with Gtk 2.6 anymore and most WMs should support this now. * src/Makefile.am: Added internal libtv dependency. Added Xinerama to LDADD. (zapping_SOURCES): Added zapping.c, zapping.h. * src/zmisc.h, src/zmisc.c, src/properties.c, src/main.c, src/interface.c, src/globals.h, src/globals.c, src/cmd.c, src/capture.c, src/audio.c, plugins/screenshot/screenshot.c: Replaced GtkWiget* main_window by Zapping GObject. * plugins/mpeg/mpeg.c: Removed lots of unused local vars. * src/zmisc.c, src/tveng_private.h, src/tveng.h, src/tveng.c, src/overlay.c, src/main.c, src/globals.h, src/globals.c, src/fullscreen.c, src/cmd.c, src/channel_editor.c, src/capture.c, src/audio.c, plugins/mpeg/mpeg.c, plugins/alirc/alirc.c: Split tveng_capture_mode into display and capture mode for future fullscreen capture and Teletext. * pixmaps/Makefile.am: Depend on self, fix type of gdk_pixbuf_csource output. * common/videodev2.h: Removed LINUX_VERSION_CODE warning, this symbol may be undefined. * configure.in: Changed to use automake 1.7. Removed compile warning flags, users must set CFLAGS themselves now. Added libtv/Makefile output. Added endian check for libtv/pixel_format.c. * autogen.sh: Require automake 1.7 or compatible, updated Plan B. * Makefile.am (SUBDIRS): Added libtv. * src/zvideo.c, src/zvbi.c, src/zmisc.c, src/zimage.h, src/zimage.c, src/zconf.h, src/zconf.c, src/yuv2rgb.c, src/xawtv.c, src/x11stuff.h, src/x11stuff.c, src/video_xv.c, src/video_x11.c, src/video_mem.c, src/video_gdkrgb.c, src/vdr.c, src/v4linterface.h, src/v4linterface.c, src/tvengxv.c, src/tvengemu.c, src/tveng_private.h, src/tveng25.c, src/tveng2.c, src/tveng1.h, src/tveng1.c, src/tveng.h, src/tveng.c, src/ttxview.c, src/remote.c, src/properties.c, src/properties-handler.h, src/properties-handler.c, src/plugin_properties.c, src/plugin_common.h, src/overlay.c, src/oss.c, src/osd.c, src/mixer.c, src/main.c, src/keysyms.h, src/keyboard.c, src/interface.c, src/fullscreen.c, src/frequencies.h, src/frequencies.c, src/esd.c, src/csconvert.h src/csconvert.c, src/cmd.c, src/channel_editor.c, src/capture.c, src/audio.h, src/audio.c, src/arts.c, plugins/screenshot/screenshot.h, plugins/screenshot/screenshot.c, plugins/screenshot/deint.c, plugins/screenshot/b_ppm.c, plugins/screenshot/b_jpeg.c, plugins/mpeg/options.c, plugins/mpeg/mpeg.c, plugins/alirc/alirc.c, common/fifo.h, common/fifo.c, common/device.c, common/alloc.h: Const, signedness, unused function parameters, void pointer arithmetic fixes. * src/zapping.c, src/zapping.h: Added to modularize things more in the future. * libtv: Added for zapping_setup_fb. * libtv/clip_vector.c, libtv/clip_vector.h, libtv/image_format.c, libtv/image_format.h, libtv/overlay_buffer.h, libtv/pixel_format.c, libtv/pixel_format.h: Moved here from src/tveng.c, src/tveng.h. * libtv/clip_vector.c (tv_clip_vector_copy): Fixed too small realloc. * libtv/screen.c, libtv/screen.h: Merged DGA and Xinerama routines, moved here from src/x11_stuff.c, src/x11_stuff.h. * libtv/macros.h, libtv/misc.h: Cloned from zvbi-0.3. 2004-08-13 <mschimek@users.sf.net> * src/ttxview.c (ttxview_detach, ttxview_attach): Create second toolbar in Teletext mode. * src/zvideo.c (z_video_new): Fixed double instantiation. 2004-08-11 <mschimek@users.sf.net> * plugins/alirc/alirc.c (legacy_command_txl_table): Fixed invalid volume_incr command (bug #1005111). * src/osd.c (ttx_position, cc_position): Corrected subtitle position in fullscreen mode. * tvengbktr.c (set_clips): Don't scale clip coordinates when we capture only one field. * tveng.c, tveng.h, tveng1.c,tveng2.c,tveng25.c, tvengbktr.c, zmisc.c: Added TVENG_ATTACH_VBI mode to prepare driver for VBI capturing only. Required by the bktr driver which cannot capture VBI without video, otherwise like TVENG_ATTACH_CONTROL. * zapping_setup_fb/Makefile.am (install-binPROGRAMS): Need not install when we use the bktr driver. * src/yuv2rgb.c (mmx_register_converters), src/csconvert.h, src/csconvert.c (register_converter, register_converters): Added converter name parameter for debugging. * src/xawtv.c (property_get_string): Don't use gdk 2.4 X Atom functions, must work with 2.0. * src/video_xv.c (image_new): Fixed mem leak. (image_new): Await X server confirmation before marking shared segment for removal (FreeBSD). (suggest_format): Broken by design, disabled. (traverse_ports): Add support for RGB formats. Required by bktr driver. * src/video_mem.c (planar_image_new): Handle YUV formats besides 420. * src/vdr.c (vdr_open): Properly close vdr_sock on connect failure. * src/v4linterface.h, src/v4linterface.c (z_switch_audio_input): Added audio input menu builder and z_switch_audio_input functions for bktr. (z_switch_standard): Restart VBI capturing after standard change. s/strncpy/g_strlcpy. * src/tvengbktr.c (set_video_standard): Did not store current standard, fixed p_tveng_stop_everything call. (set_tuner_frequency): Undo forced mute after frequency change. (set_video_input): Undo forced mute after frequency change, fixed p_tveng_stop_everything call. (get_signal_strength): Finished for automatic channel scan. * src/tveng25.c, src/tveng2.c, src/tveng1.c, src/tvengemu.c, src/tveng_private.h: Cleaned up preview window interface. * src/tvengbktr.c: Added capture and overlay routines, audio input support because automatic selection by video input doesn't seem to work. Rewrote controls code and added mute control. * src/tveng_private.h: Added driver audio input interface for bktr. * src/tvengemu.c: Removed redundant get/set_capture_size(). * src/tveng25.c: Replaced audio mode control hack by tveng audio mode interface. Use audio mode control helper functions in tveng.c. Use V4L audio ioctl to work around bttv bug. Removed redundant get/set_capture_size(). * src/tveng2.c: Removed get/set capture_size(). * src/tveng1.c: Replaced audio mode control hack by tveng audio mode interface, moved control building function to tveng.c. Removed redundant get/set_capture_size(). * src/tveng.h: Changed tv_audio_capability enum to flag set. Changed tv_clip width, height to x2, y2. * src/tveng.c, src/tveng_private.h (_tv_strlcpy): Added, with strlcpy() fallback if available. (_tv_strndup): Use strndup() if available. (_tv_asprintf): Use asprintf() if available. (append_audio_mode_control, set_audio_mode_control): New helper function to build and set an audio mode (mono stereo etc) control, preliminary wrapper for tv_set_audio_mode. * src/tveng.c (tveng_device_info_destroy): Did not destroy audio mode callback. (tveng_attach_device): Mask out bktr YUV formats, conflict with VBI capturing. Replaced GNU asprintf by _tv_asprintf. (tv_get_audio_input, tv_set_audio_input, tv_set_audio_mode): Implemented now. (tv_pixel_format_to_pixfmt): Expect more unusual input, required for bktr. (tveng_copy_frame): Handle planar YUV formats besides 420. (tv_clip_vector_equal): Handle comparison of same. (tv_clip_vector_copy): Handle self assignment. (tv_clip_vector_add_clip_xy): Changed tv_clip width, height to x2, y2. Fixed band order bug. (_tv_image_format_dump): Added. Replaced redundant get/set_capture_size by calls to driver capture format functions. * src/remote.c (python_command_printf): Replaced GNU vasprintf by glib/g_strdup_vprintf(). * src/plugins.c (plugin_load_plugins_in_dir): Replaced GNU scandir by glib/g_dir functions. * src/overlay.c: Changed tv_clip width, height to x2, y2. * src/oss.c (open_pcm): SOUND_MASK_PHONEIN not defined on Solaris. * src/main.c (restore_controls): Restore current audio input. (restore_controls): Expect invalid current channel (NULL). (main, startup_zapping): Use different default / fallback devices on FreeBSD. * src/vdr.c, src/keyboard.c, src/interface.c, src/cmd.c: Moved include remote.h to properly compile on Solaris. * src/capture.c (scan_device): Take shortcut if set of supported pixel formats is const. (request_capture_format_real): Fixed conversion check. * src/Makefile.am (zapping_LDADD): Missing -lX11. * plugins/mpeg/options.c (grte_options_load): Skip special options to keep defaults. * plugins/mpeg/mpeg.c (plugin_load_config): s/strndup/g_strndup. * common/structpr_gen.pl: Handle ioctls with plain type parameters. * common/device.h, common/device.c: Added mmap, munmap wrappers. * common/Makefile.am (_videodev25.h): RW fixes. (_bktr.h): Added hints. * configure.in: strlcpy() check. Bktr driver needs no zapping_setup_fb and PAM. Don't compile with librte on FreeBSD, doesn't work right. s/DATADIRNAME/datadir, is a gettextism.