diff options
Diffstat (limited to 'src/input/vcd/libvcd/inf.c')
-rw-r--r-- | src/input/vcd/libvcd/inf.c | 531 |
1 files changed, 0 insertions, 531 deletions
diff --git a/src/input/vcd/libvcd/inf.c b/src/input/vcd/libvcd/inf.c deleted file mode 100644 index 588c8e5f7..000000000 --- a/src/input/vcd/libvcd/inf.c +++ /dev/null @@ -1,531 +0,0 @@ -/* - $Id: inf.c,v 1.3 2005/01/01 02:43:59 rockyb Exp $ - - Copyright (C) 2002,2003 Rocky Bernstein <rocky@panix.com> - - This program 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 of the License, or - (at your option) any later version. - - This program 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 this program; if not, write to the Free Foundation - Software, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - Things here refer to lower-level structures using a structure other - than vcdinfo_t. For higher-level structures via the vcdinfo_t, see - info.c -*/ - - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include <stdio.h> -#include <stddef.h> -#include <errno.h> - -#ifdef HAVE_STDLIB_H -#include <stdlib.h> -#endif -#ifdef HAVE_STRING_H -#include <string.h> -#endif -#ifdef HAVE_SYS_TYPES_H -#include <sys/types.h> -#endif -#ifdef HAVE_SYS_STAT_H -#include <sys/stat.h> -#endif -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif - -#include <cdio/cdio.h> -#include <cdio/bytesex.h> -#include <cdio/util.h> - -/* Eventually move above libvcd includes but having vcdinfo including. */ -#include <libvcd/info.h> - -/* Private headers */ -#include "info_private.h" -#include "pbc.h" - -static const char _rcsid[] = "$Id: inf.c,v 1.3 2005/01/01 02:43:59 rockyb Exp $"; - -#define BUF_COUNT 16 -#define BUF_SIZE 80 - -/* Return a pointer to a internal free buffer */ -static char * -_getbuf (void) -{ - static char _buf[BUF_COUNT][BUF_SIZE]; - static int _num = -1; - - _num++; - _num %= BUF_COUNT; - - memset (_buf[_num], 0, BUF_SIZE); - - return _buf[_num]; -} - -const char * -vcdinf_area_str (const struct psd_area_t *_area) -{ - char *buf; - - if (!_area->x1 - && !_area->y1 - && !_area->x2 - && !_area->y2) - return "disabled"; - - buf = _getbuf (); - - snprintf (buf, BUF_SIZE, "[%3d,%3d] - [%3d,%3d]", - _area->x1, _area->y1, - _area->x2, _area->y2); - - return buf; -} - -/*! - Return a string containing the VCD album id, or NULL if there is - some problem in getting this. -*/ -const char * -vcdinf_get_album_id(const InfoVcd_t *info) -{ - if (NULL==info) return NULL; - return vcdinfo_strip_trail (info->album_desc, MAX_ALBUM_LEN); -} - -/*! - Get autowait time value for PsdPlayListDescriptor *d. - Time is in seconds unless it is -1 (unlimited). -*/ -int -vcdinf_get_autowait_time (const PsdPlayListDescriptor_t *d) -{ - return vcdinfo_get_wait_time (d->atime); -} - -/*! - Return the base selection number. VCD_INVALID_BSN is returned if there - is an error. -*/ -unsigned int -vcdinf_get_bsn(const PsdSelectionListDescriptor_t *psd) -{ - if (NULL==psd) return VCDINFO_INVALID_BSN; - return(psd->bsn); -} - -/*! - Return a string giving VCD format (VCD 1.0 VCD 1.1, SVCD, ... - for this object. -*/ -const char * -vcdinf_get_format_version_str (vcd_type_t vcd_type) -{ - switch (vcd_type) - { - case VCD_TYPE_VCD: - return ("VCD 1.0"); - break; - case VCD_TYPE_VCD11: - return ("VCD 1.1"); - break; - case VCD_TYPE_VCD2: - return ("VCD 2.0"); - break; - case VCD_TYPE_SVCD: - return ("SVCD"); - break; - case VCD_TYPE_HQVCD: - return ("HQVCD"); - break; - case VCD_TYPE_INVALID: - return ("INVALID"); - break; - default: - return ( "????"); - } -} - -/*! - Return loop count. 0 is infinite loop. -*/ -uint16_t -vcdinf_get_loop_count (const PsdSelectionListDescriptor_t *psd) -{ - return 0x7f & psd->loop; -} - -/*! - Return LOT offset -*/ -uint16_t -vcdinf_get_lot_offset (const LotVcd_t *lot, unsigned int n) -{ - return uint16_from_be (lot->offset[n]); -} - -/*! - Return the number of entries in the VCD. -*/ -unsigned int -vcdinf_get_num_entries(const EntriesVcd_t *entries) -{ - if (NULL==entries) return 0; - return (uint16_from_be (entries->entry_count)); -} - -/*! - Return the number of segments in the VCD. -*/ -segnum_t -vcdinf_get_num_segments(const InfoVcd_t *info) -{ - if (NULL==info) return 0; - return (uint16_from_be (info->item_count)); -} - -/*! - Return number of LIDs. -*/ -lid_t -vcdinf_get_num_LIDs (const InfoVcd_t *info) -{ - if (NULL==info) return 0; - /* Should probably use _vcd_pbc_max_lid instead? */ - return uint16_from_be (info->lot_entries); -} - -/*! - Return the number of menu selections for selection list descriptor psd. -*/ -unsigned int -vcdinf_get_num_selections(const PsdSelectionListDescriptor_t *psd) -{ - return psd->nos; -} - -/*! - Get play time value for PsdPlayListDescriptor *d. - Time is in 1/15-second units. -*/ -uint16_t -vcdinf_get_play_time (const PsdPlayListDescriptor_t *d) -{ - if (NULL==d) return 0; - return uint16_from_be (d->ptime); -} - -/*! - Return number of bytes in PSD. -*/ -uint32_t -vcdinf_get_psd_size (const InfoVcd_t *info) -{ - if (NULL==info) return 0; - return uint32_from_be (info->psd_size); -} - -/*! - Get timeout wait time value for PsdPlayListDescriptor *d. - Return VCDINFO_INVALID_OFFSET if d is NULL; - Time is in seconds unless it is -1 (unlimited). -*/ -uint16_t -vcdinf_get_timeout_offset (const PsdSelectionListDescriptor_t *d) -{ - if (NULL == d) return VCDINFO_INVALID_OFFSET; - return uint16_from_be (d->timeout_ofs); -} - -/*! - Get timeout wait time value for PsdPlayListDescriptor *d. - Time is in seconds unless it is -1 (unlimited). -*/ -int -vcdinf_get_timeout_time (const PsdSelectionListDescriptor_t *d) -{ - return vcdinfo_get_wait_time (d->totime); -} - -/*! - Return the track number for entry n in obj. The first track starts - at 1. Note this is one less than the track number reported in vcddump. - (We don't count the header track?) -*/ -track_t -vcdinf_get_track(const EntriesVcd_t *entries, const unsigned int entry_num) -{ - const unsigned int entry_count = uint16_from_be (entries->entry_count); - /* Note entry_num is 0 origin. */ - return entry_num < entry_count ? - cdio_from_bcd8 (entries->entry[entry_num].n): - VCDINFO_INVALID_TRACK; -} - -/*! - Return the VCD volume count - the number of CD's in the collection. -*/ -unsigned int -vcdinf_get_volume_count(const InfoVcd_t *info) -{ - if (NULL==info) return 0; - return(uint16_from_be( info->vol_count)); -} - -/*! - Return the VCD volume num - the number of the CD in the collection. - This is a number between 1 and the volume count. -*/ -unsigned int -vcdinf_get_volume_num(const InfoVcd_t *info) -{ - if (NULL == info) return 0; - return uint16_from_be(info->vol_id); -} - -/*! - Get wait time value for PsdPlayListDescriptor *d. - Time is in seconds unless it is -1 (unlimited). -*/ -int -vcdinf_get_wait_time (const PsdPlayListDescriptor_t *d) -{ - return vcdinfo_get_wait_time (d->wtime); -} - -/*! - Return true if loop has a jump delay -*/ -bool -vcdinf_has_jump_delay (const PsdSelectionListDescriptor_t *psd) -{ - if (NULL==psd) return false; - return ((0x80 & psd->loop) != 0); -} - -/*! - Comparison routine used in sorting. We compare LIDs and if those are - equal, use the offset. - Note: we assume an unassigned LID is 0 and this compares as a high value. - - NOTE: Consider making static. -*/ -int -vcdinf_lid_t_cmp (vcdinfo_offset_t *a, vcdinfo_offset_t *b) -{ - if (a->lid && b->lid) - { - if (a->lid > b->lid) return +1; - if (a->lid < b->lid) return -1; - vcd_warn ("LID %d at offset %d has same nunber as LID of offset %d", - a->lid, a->offset, b->offset); - } - else if (a->lid) return -1; - else if (b->lid) return +1; - - /* Failed to sort on LID, try offset now. */ - - if (a->offset > b->offset) return +1; - if (a->offset < b->offset) return -1; - - /* LIDS and offsets are equal. */ - return 0; -} - -/* Get the LID from a given play-list descriptor. - VCDINFO_REJECTED_MASK is returned d on error or pld is NULL. -*/ -lid_t -vcdinf_pld_get_lid(const PsdPlayListDescriptor_t *pld) -{ - return (pld != NULL) - ? uint16_from_be (pld->lid) & VCDINFO_LID_MASK - : VCDINFO_REJECTED_MASK; -} - -/** - \fn vcdinfo_pld_get_next_offset(const PsdPlayListDescriptor *pld); - \brief Get next offset for a given PSD selector descriptor. - \return VCDINFO_INVALID_OFFSET is returned on error or if pld has no "next" - entry or pld is NULL. Otherwise the LID offset is returned. - */ -uint16_t -vcdinf_pld_get_next_offset(const PsdPlayListDescriptor_t *pld) -{ - if (NULL == pld) return VCDINFO_INVALID_OFFSET; - return uint16_from_be (pld->next_ofs); -} - -/*! - Return number of items in LIDs. Return 0 if error or not found. -*/ -int -vcdinf_pld_get_noi (const PsdPlayListDescriptor_t *pld) -{ - if ( NULL == pld ) return 0; - return pld->noi; -} - -/*! - Return the playlist item i in d. -*/ -uint16_t -vcdinf_pld_get_play_item(const PsdPlayListDescriptor_t *pld, unsigned int i) -{ - if (NULL==pld) return 0; - return uint16_from_be(pld->itemid[i]); -} - -/** - \fn vcdinf_pld_get_prev_offset(const PsdPlayListDescriptor *pld); - \brief Get prev offset for a given PSD selector descriptor. - \return VCDINFO_INVALID_OFFSET is returned on error or if pld has no "prev" - entry or pld is NULL. Otherwise the LID offset is returned. - */ -uint16_t -vcdinf_pld_get_prev_offset(const PsdPlayListDescriptor_t *pld) -{ - return (pld != NULL) ? - uint16_from_be (pld->prev_ofs) : VCDINFO_INVALID_OFFSET; -} - -/** - \fn vcdinf_pld_get_return_offset(const PsdPlayListDescriptor *pld); - \brief Get return offset for a given PLD selector descriptor. - \return VCDINFO_INVALID_OFFSET is returned on error or if pld has no - "return" entry or pld is NULL. Otherwise the LID offset is returned. - */ -uint16_t -vcdinf_pld_get_return_offset(const PsdPlayListDescriptor_t *pld) -{ - return (pld != NULL) ? - uint16_from_be (pld->return_ofs) : VCDINFO_INVALID_OFFSET; -} - -/** - * \fn vcdinfo_psd_get_default_offset(const PsdSelectionListDescriptor *psd); - * \brief Get next offset for a given PSD selector descriptor. - * \return VCDINFO_INVALID_OFFSET is returned on error or if psd is - * NULL. Otherwise the LID offset is returned. - */ -uint16_t -vcdinf_psd_get_default_offset(const PsdSelectionListDescriptor_t *psd) -{ - if (NULL == psd) return VCDINFO_INVALID_OFFSET; - return uint16_from_be (psd->default_ofs); -} - -/*! - Get the item id for a given selection-list descriptor. - VCDINFO_REJECTED_MASK is returned on error or if psd is NULL. -*/ -uint16_t -vcdinf_psd_get_itemid(const PsdSelectionListDescriptor_t *psd) -{ - return (psd != NULL) ? uint16_from_be(psd->itemid) : VCDINFO_REJECTED_MASK; -} - -/*! - Get the LID from a given selection-list descriptor. - VCDINFO_REJECTED_MASK is returned on error or psd is NULL. -*/ -lid_t -vcdinf_psd_get_lid(const PsdSelectionListDescriptor_t *psd) -{ - return (psd != NULL) - ? uint16_from_be (psd->lid) & VCDINFO_LID_MASK - : VCDINFO_REJECTED_MASK; -} - -/*! - Get the LID rejected status for a given PSD selector descriptor. - true is also returned d is NULL. -*/ -bool -vcdinf_psd_get_lid_rejected(const PsdSelectionListDescriptor_t *psd) -{ - return (psd != NULL) - ? vcdinfo_is_rejected(uint16_from_be(psd->lid)) - : true; -} - -/** - * \fn vcdinf_psd_get_next_offset(const PsdSelectionListDescriptor *psd); - * \brief Get "next" offset for a given PSD selector descriptor. - * \return VCDINFO_INVALID_OFFSET is returned on error or if psd is - * NULL. Otherwise the LID offset is returned. - */ -uint16_t -vcdinf_psd_get_next_offset(const PsdSelectionListDescriptor_t *psd) -{ - if (NULL == psd) return VCDINFO_INVALID_OFFSET; - return uint16_from_be (psd->next_ofs); -} - -/** - * \fn vcdinf_psd_get_offset(const PsdSelectionListDescriptor *d, - * unsigned int entry_num); - * \brief Get offset entry_num for a given PSD selector descriptor. - * \return VCDINFO_INVALID_OFFSET is returned if d on error or d is - * NULL. Otherwise the LID offset is returned. - */ -uint16_t -vcdinf_psd_get_offset(const PsdSelectionListDescriptor_t *psd, - unsigned int entry_num) -{ - return (psd != NULL && entry_num < vcdinf_get_num_selections(psd)) - ? uint16_from_be (psd->ofs[entry_num]) : VCDINFO_INVALID_OFFSET; -} - -/** - \fn vcdinf_psd_get_prev_offset(const PsdSelectionListDescriptor *psd); - \brief Get "prev" offset for a given PSD selector descriptor. - \return VCDINFO_INVALID_OFFSET is returned on error or if psd has no "prev" - entry or psd is NULL. Otherwise the LID offset is returned. - */ -uint16_t -vcdinf_psd_get_prev_offset(const PsdSelectionListDescriptor_t *psd) -{ - return (psd != NULL) ? - uint16_from_be (psd->prev_ofs) : VCDINFO_INVALID_OFFSET; -} - -/** - * \fn vcdinf_psd_get_return_offset(const PsdSelectionListDescriptor *psd); - * \brief Get return offset for a given PSD selector descriptor. - \return VCDINFO_INVALID_OFFSET is returned on error or if psd has no - "return" entry or psd is NULL. Otherwise the LID offset is returned. - */ -uint16_t -vcdinf_psd_get_return_offset(const PsdSelectionListDescriptor_t *psd) -{ - return (psd != NULL) ? - uint16_from_be (psd->return_ofs) : VCDINFO_INVALID_OFFSET; -} - - -/* - * Local variables: - * c-file-style: "gnu" - * tab-width: 8 - * indent-tabs-mode: nil - * End: - */ |