gstreamer/gst-libs/gst/audio/gstaudiocdsrc.c

1626 lines
47 KiB
C
Raw Normal View History

/* GStreamer Audio CD Source Base Class
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
* Copyright (C) 2005 Tim-Philipp Müller <tim centricular net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
/* TODO:
*
* - in ::start(), we want to post a tags message with an array or a list
* of tagslists of all tracks, so that applications know at least the
* number of tracks and all track durations immediately without having
* to do any querying. We have to decide what type and name to use for
* this array of track taglists.
*
* - FIX cddb discid calculation algorithm for mixed mode CDs - do we use
* offsets and duration of ALL tracks (data + audio) for the CDDB ID
* calculation, or only audio tracks?
*
* - Do we really need properties for the TOC bias/offset stuff? Wouldn't
* environment variables make much more sense? Do we need this at all
* (does it only affect ancient hardware?)
*/
/**
* SECTION:gstaudiocdsrc
* @short_description: Base class for Audio CD sources
*
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
* <refsect2>
* <para>
* Provides a base class for CD digital audio (CDDA) sources, which handles
* things like seeking, querying, discid calculation, tags, and buffer
* timestamping.
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
* </para>
* <title>Using GstAudioCdSrc-based elements in applications</title>
* <para>
* GstAudioCdSrc registers two #GstFormat<!-- -->s of its own, namely
* the "track" format and the "sector" format. Applications will usually
* only find the "track" format interesting. You can retrieve that #GstFormat
* for use in seek events or queries with gst_format_get_by_nick("track").
* </para>
* <para>
* In order to query the number of tracks, for example, an application would
* set the CDDA source element to READY or PAUSED state and then query the
* the number of tracks via gst_element_query_duration() using the track
* format acquired above. Applications can query the currently playing track
* in the same way.
* </para>
* <para>
* Alternatively, applications may retrieve the currently playing track and
* the total number of tracks from the taglist that will posted on the bus
* whenever the CD is opened or the currently playing track changes. The
* taglist will contain GST_TAG_TRACK_NUMBER and GST_TAG_TRACK_COUNT tags.
* </para>
* <para>
* Applications playing back CD audio using playbin and cdda://n URIs should
* issue a seek command in track format to change between tracks, rather than
* setting a new cdda://n+1 URI on playbin (as setting a new URI on playbin
* involves closing and re-opening the CD device, which is much much slower).
* </para>
* <title>Tags and meta-information</title>
* <para>
* CDDA sources will automatically emit a number of tags, details about which
* can be found in the libgsttag documentation. Those tags are:
* #GST_TAG_CDDA_CDDB_DISCID, #GST_TAG_CDDA_CDDB_DISCID_FULL,
* #GST_TAG_CDDA_MUSICBRAINZ_DISCID, #GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL,
* among others.
* </para>
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
* </refsect2>
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <string.h>
#include <stdlib.h> /* for strtol */
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
#include <gst/tag/tag.h>
#include <gst/audio/audio.h>
#include "gstaudiocdsrc.h"
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
#include "gst/gst-i18n-plugin.h"
GST_DEBUG_CATEGORY_STATIC (gst_audio_cd_src_debug);
#define GST_CAT_DEFAULT gst_audio_cd_src_debug
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
#define DEFAULT_DEVICE "/dev/cdrom"
#define CD_FRAMESIZE_RAW (2352)
#define SECTORS_PER_SECOND (75)
#define SECTORS_PER_MINUTE (75*60)
#define SAMPLES_PER_SECTOR (CD_FRAMESIZE_RAW >> 2)
#define TIME_INTERVAL_FROM_SECTORS(sectors) ((SAMPLES_PER_SECTOR * sectors * GST_SECOND) / 44100)
#define SECTORS_FROM_TIME_INTERVAL(dtime) (dtime * 44100 / (SAMPLES_PER_SECTOR * GST_SECOND))
enum
{
ARG_0,
ARG_MODE,
ARG_DEVICE,
ARG_TRACK,
ARG_TOC_OFFSET,
ARG_TOC_BIAS
};
static void gst_audio_cd_src_uri_handler_init (gpointer g_iface,
gpointer iface_data);
static void gst_audio_cd_src_get_property (GObject * object, guint prop_id,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GValue * value, GParamSpec * pspec);
static void gst_audio_cd_src_set_property (GObject * object, guint prop_id,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
const GValue * value, GParamSpec * pspec);
static void gst_audio_cd_src_finalize (GObject * obj);
static gboolean gst_audio_cd_src_query (GstBaseSrc * src, GstQuery * query);
static gboolean gst_audio_cd_src_handle_event (GstBaseSrc * basesrc,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GstEvent * event);
static gboolean gst_audio_cd_src_do_seek (GstBaseSrc * basesrc,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GstSegment * segment);
static gboolean gst_audio_cd_src_start (GstBaseSrc * basesrc);
static gboolean gst_audio_cd_src_stop (GstBaseSrc * basesrc);
static GstFlowReturn gst_audio_cd_src_create (GstPushSrc * pushsrc,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GstBuffer ** buf);
static gboolean gst_audio_cd_src_is_seekable (GstBaseSrc * basesrc);
static void gst_audio_cd_src_update_duration (GstAudioCdSrc * src);
static void gst_audio_cd_src_set_index (GstElement * src, GstIndex * index);
static GstIndex *gst_audio_cd_src_get_index (GstElement * src);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
#define gst_audio_cd_src_parent_class parent_class
G_DEFINE_TYPE_WITH_CODE (GstAudioCdSrc, gst_audio_cd_src, GST_TYPE_PUSH_SRC,
G_IMPLEMENT_INTERFACE (GST_TYPE_URI_HANDLER,
gst_audio_cd_src_uri_handler_init));
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
#define SRC_CAPS \
"audio/x-raw, " \
"format = (string) " GST_AUDIO_NE(S16) ", " \
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
"rate = (int) 44100, " \
"channels = (int) 2" \
static GstStaticPadTemplate gst_audio_cd_src_src_template =
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (SRC_CAPS)
);
/* our two formats */
static GstFormat track_format;
static GstFormat sector_format;
GType
gst_audio_cd_src_mode_get_type (void)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
static GType mode_type; /* 0 */
static const GEnumValue modes[] = {
{GST_AUDIO_CD_SRC_MODE_NORMAL, "Stream consists of a single track",
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
"normal"},
{GST_AUDIO_CD_SRC_MODE_CONTINUOUS, "Stream consists of the whole disc",
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
"continuous"},
{0, NULL, NULL}
};
if (mode_type == 0)
mode_type = g_enum_register_static ("GstAudioCdSrcMode", modes);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
return mode_type;
}
static void
gst_audio_cd_src_class_init (GstAudioCdSrcClass * klass)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
GstElementClass *element_class;
GstPushSrcClass *pushsrc_class;
GstBaseSrcClass *basesrc_class;
GObjectClass *gobject_class;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
gobject_class = (GObjectClass *) klass;
element_class = (GstElementClass *) klass;
basesrc_class = (GstBaseSrcClass *) klass;
pushsrc_class = (GstPushSrcClass *) klass;
GST_DEBUG_CATEGORY_INIT (gst_audio_cd_src_debug, "audiocdsrc", 0,
"Audio CD source base class");
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
/* our very own formats */
track_format = gst_format_register ("track", "CD track");
sector_format = gst_format_register ("sector", "CD sector");
/* register CDDA tags */
gst_tag_register_musicbrainz_tags ();
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
#if 0
///// FIXME: what type to use here? ///////
gst_tag_register (GST_TAG_CDDA_TRACK_TAGS, GST_TAG_FLAG_META, GST_TYPE_TAG_LIST, "track-tags", "CDDA taglist for one track", gst_tag_merge_use_first); ///////////// FIXME: right function??? ///////
#endif
gobject_class->set_property = gst_audio_cd_src_set_property;
gobject_class->get_property = gst_audio_cd_src_get_property;
gobject_class->finalize = gst_audio_cd_src_finalize;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DEVICE,
g_param_spec_string ("device", "Device", "CD device location",
Use G_PARAM_STATIC_STRINGS everywhere for GParamSpecs that use static strings (i.e. all). This gives us less memory u... Original commit message from CVS: * configure.ac: * ext/alsa/gstalsamixerelement.c: (gst_alsa_mixer_element_class_init): * ext/alsa/gstalsasink.c: (gst_alsasink_class_init): * ext/alsa/gstalsasrc.c: (gst_alsasrc_class_init): * ext/cdparanoia/gstcdparanoiasrc.c: (gst_cd_paranoia_src_class_init): * ext/gio/gstgiosink.c: (gst_gio_sink_class_init): * ext/gio/gstgiosrc.c: (gst_gio_src_class_init): * ext/gio/gstgiostreamsink.c: (gst_gio_stream_sink_class_init): * ext/gio/gstgiostreamsrc.c: (gst_gio_stream_src_class_init): * ext/gnomevfs/gstgnomevfssink.c: (gst_gnome_vfs_sink_class_init): * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnome_vfs_src_class_init): * ext/ogg/gstoggmux.c: (gst_ogg_mux_class_init): * ext/pango/gsttextoverlay.c: (gst_text_overlay_class_init): * ext/pango/gsttextrender.c: (gst_text_render_class_init): * ext/theora/theoradec.c: (gst_theora_dec_class_init): * ext/theora/theoraenc.c: (gst_theora_enc_class_init): * ext/theora/theoraparse.c: (gst_theora_parse_class_init): * ext/vorbis/vorbisenc.c: (gst_vorbis_enc_class_init): * gst-libs/gst/audio/gstaudiofiltertemplate.c: (gst_audio_filter_template_class_init): * gst-libs/gst/audio/gstbaseaudiosink.c: (gst_base_audio_sink_class_init): * gst-libs/gst/audio/gstbaseaudiosrc.c: (gst_base_audio_src_class_init): * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_class_init): * gst-libs/gst/interfaces/mixertrack.c: (gst_mixer_track_class_init): * gst-libs/gst/rtp/gstbasertpdepayload.c: (gst_base_rtp_depayload_class_init): * gst-libs/gst/rtp/gstbasertppayload.c: (gst_basertppayload_class_init): * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_class_init): * gst/audiorate/gstaudiorate.c: (gst_audio_rate_class_init): * gst/audioresample/gstaudioresample.c: (gst_audioresample_class_init): * gst/audiotestsrc/gstaudiotestsrc.c: (gst_audio_test_src_class_init): * gst/gdp/gstgdppay.c: (gst_gdp_pay_class_init): * gst/playback/gstdecodebin2.c: (gst_decode_bin_class_init): * gst/playback/gstplaybasebin.c: (gst_play_base_bin_class_init), (preroll_unlinked): * gst/playback/gstplaybin.c: (gst_play_bin_class_init): * gst/playback/gstplaybin2.c: (gst_play_bin_class_init): * gst/playback/gstplaysink.c: (gst_play_sink_class_init): * gst/playback/gstqueue2.c: (gst_queue_class_init): * gst/playback/gststreaminfo.c: (gst_stream_info_class_init): * gst/playback/gststreamselector.c: (gst_selector_pad_class_init), (gst_stream_selector_class_init): * gst/playback/gsturidecodebin.c: (gst_uri_decode_bin_class_init): * gst/subparse/gstsubparse.c: (gst_sub_parse_class_init): * gst/tcp/gstmultifdsink.c: (gst_multi_fd_sink_class_init): * gst/tcp/gsttcpclientsink.c: (gst_tcp_client_sink_class_init): * gst/tcp/gsttcpclientsrc.c: (gst_tcp_client_src_class_init): * gst/tcp/gsttcpserversink.c: (gst_tcp_server_sink_class_init): * gst/tcp/gsttcpserversrc.c: (gst_tcp_server_src_class_init): * gst/videorate/gstvideorate.c: (gst_video_rate_class_init): * gst/videoscale/gstvideoscale.c: (gst_video_scale_class_init): * gst/videotestsrc/gstvideotestsrc.c: (gst_video_test_src_class_init): * gst/volume/gstvolume.c: (gst_volume_class_init): * sys/v4l/gstv4lelement.c: (gst_v4lelement_class_init): * sys/v4l/gstv4lmjpegsink.c: (gst_v4lmjpegsink_class_init): * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_class_init): * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_class_init): * sys/ximage/ximagesink.c: (gst_ximagesink_class_init): * sys/xvimage/xvimagesink.c: (gst_xvimagesink_class_init): Use G_PARAM_STATIC_STRINGS everywhere for GParamSpecs that use static strings (i.e. all). This gives us less memory usage, fewer allocations and thus less memory defragmentation. Depend on core CVS for this. Fixes bug #523806.
2008-03-22 15:00:53 +00:00
NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MODE,
g_param_spec_enum ("mode", "Mode", "Mode", GST_TYPE_AUDIO_CD_SRC_MODE,
GST_AUDIO_CD_SRC_MODE_NORMAL,
Use G_PARAM_STATIC_STRINGS everywhere for GParamSpecs that use static strings (i.e. all). This gives us less memory u... Original commit message from CVS: * configure.ac: * ext/alsa/gstalsamixerelement.c: (gst_alsa_mixer_element_class_init): * ext/alsa/gstalsasink.c: (gst_alsasink_class_init): * ext/alsa/gstalsasrc.c: (gst_alsasrc_class_init): * ext/cdparanoia/gstcdparanoiasrc.c: (gst_cd_paranoia_src_class_init): * ext/gio/gstgiosink.c: (gst_gio_sink_class_init): * ext/gio/gstgiosrc.c: (gst_gio_src_class_init): * ext/gio/gstgiostreamsink.c: (gst_gio_stream_sink_class_init): * ext/gio/gstgiostreamsrc.c: (gst_gio_stream_src_class_init): * ext/gnomevfs/gstgnomevfssink.c: (gst_gnome_vfs_sink_class_init): * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnome_vfs_src_class_init): * ext/ogg/gstoggmux.c: (gst_ogg_mux_class_init): * ext/pango/gsttextoverlay.c: (gst_text_overlay_class_init): * ext/pango/gsttextrender.c: (gst_text_render_class_init): * ext/theora/theoradec.c: (gst_theora_dec_class_init): * ext/theora/theoraenc.c: (gst_theora_enc_class_init): * ext/theora/theoraparse.c: (gst_theora_parse_class_init): * ext/vorbis/vorbisenc.c: (gst_vorbis_enc_class_init): * gst-libs/gst/audio/gstaudiofiltertemplate.c: (gst_audio_filter_template_class_init): * gst-libs/gst/audio/gstbaseaudiosink.c: (gst_base_audio_sink_class_init): * gst-libs/gst/audio/gstbaseaudiosrc.c: (gst_base_audio_src_class_init): * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_class_init): * gst-libs/gst/interfaces/mixertrack.c: (gst_mixer_track_class_init): * gst-libs/gst/rtp/gstbasertpdepayload.c: (gst_base_rtp_depayload_class_init): * gst-libs/gst/rtp/gstbasertppayload.c: (gst_basertppayload_class_init): * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_class_init): * gst/audiorate/gstaudiorate.c: (gst_audio_rate_class_init): * gst/audioresample/gstaudioresample.c: (gst_audioresample_class_init): * gst/audiotestsrc/gstaudiotestsrc.c: (gst_audio_test_src_class_init): * gst/gdp/gstgdppay.c: (gst_gdp_pay_class_init): * gst/playback/gstdecodebin2.c: (gst_decode_bin_class_init): * gst/playback/gstplaybasebin.c: (gst_play_base_bin_class_init), (preroll_unlinked): * gst/playback/gstplaybin.c: (gst_play_bin_class_init): * gst/playback/gstplaybin2.c: (gst_play_bin_class_init): * gst/playback/gstplaysink.c: (gst_play_sink_class_init): * gst/playback/gstqueue2.c: (gst_queue_class_init): * gst/playback/gststreaminfo.c: (gst_stream_info_class_init): * gst/playback/gststreamselector.c: (gst_selector_pad_class_init), (gst_stream_selector_class_init): * gst/playback/gsturidecodebin.c: (gst_uri_decode_bin_class_init): * gst/subparse/gstsubparse.c: (gst_sub_parse_class_init): * gst/tcp/gstmultifdsink.c: (gst_multi_fd_sink_class_init): * gst/tcp/gsttcpclientsink.c: (gst_tcp_client_sink_class_init): * gst/tcp/gsttcpclientsrc.c: (gst_tcp_client_src_class_init): * gst/tcp/gsttcpserversink.c: (gst_tcp_server_sink_class_init): * gst/tcp/gsttcpserversrc.c: (gst_tcp_server_src_class_init): * gst/videorate/gstvideorate.c: (gst_video_rate_class_init): * gst/videoscale/gstvideoscale.c: (gst_video_scale_class_init): * gst/videotestsrc/gstvideotestsrc.c: (gst_video_test_src_class_init): * gst/volume/gstvolume.c: (gst_volume_class_init): * sys/v4l/gstv4lelement.c: (gst_v4lelement_class_init): * sys/v4l/gstv4lmjpegsink.c: (gst_v4lmjpegsink_class_init): * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_class_init): * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_class_init): * sys/ximage/ximagesink.c: (gst_ximagesink_class_init): * sys/xvimage/xvimagesink.c: (gst_xvimagesink_class_init): Use G_PARAM_STATIC_STRINGS everywhere for GParamSpecs that use static strings (i.e. all). This gives us less memory usage, fewer allocations and thus less memory defragmentation. Depend on core CVS for this. Fixes bug #523806.
2008-03-22 15:00:53 +00:00
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_TRACK,
g_param_spec_uint ("track", "Track", "Track", 1, 99, 1,
Use G_PARAM_STATIC_STRINGS everywhere for GParamSpecs that use static strings (i.e. all). This gives us less memory u... Original commit message from CVS: * configure.ac: * ext/alsa/gstalsamixerelement.c: (gst_alsa_mixer_element_class_init): * ext/alsa/gstalsasink.c: (gst_alsasink_class_init): * ext/alsa/gstalsasrc.c: (gst_alsasrc_class_init): * ext/cdparanoia/gstcdparanoiasrc.c: (gst_cd_paranoia_src_class_init): * ext/gio/gstgiosink.c: (gst_gio_sink_class_init): * ext/gio/gstgiosrc.c: (gst_gio_src_class_init): * ext/gio/gstgiostreamsink.c: (gst_gio_stream_sink_class_init): * ext/gio/gstgiostreamsrc.c: (gst_gio_stream_src_class_init): * ext/gnomevfs/gstgnomevfssink.c: (gst_gnome_vfs_sink_class_init): * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnome_vfs_src_class_init): * ext/ogg/gstoggmux.c: (gst_ogg_mux_class_init): * ext/pango/gsttextoverlay.c: (gst_text_overlay_class_init): * ext/pango/gsttextrender.c: (gst_text_render_class_init): * ext/theora/theoradec.c: (gst_theora_dec_class_init): * ext/theora/theoraenc.c: (gst_theora_enc_class_init): * ext/theora/theoraparse.c: (gst_theora_parse_class_init): * ext/vorbis/vorbisenc.c: (gst_vorbis_enc_class_init): * gst-libs/gst/audio/gstaudiofiltertemplate.c: (gst_audio_filter_template_class_init): * gst-libs/gst/audio/gstbaseaudiosink.c: (gst_base_audio_sink_class_init): * gst-libs/gst/audio/gstbaseaudiosrc.c: (gst_base_audio_src_class_init): * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_class_init): * gst-libs/gst/interfaces/mixertrack.c: (gst_mixer_track_class_init): * gst-libs/gst/rtp/gstbasertpdepayload.c: (gst_base_rtp_depayload_class_init): * gst-libs/gst/rtp/gstbasertppayload.c: (gst_basertppayload_class_init): * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_class_init): * gst/audiorate/gstaudiorate.c: (gst_audio_rate_class_init): * gst/audioresample/gstaudioresample.c: (gst_audioresample_class_init): * gst/audiotestsrc/gstaudiotestsrc.c: (gst_audio_test_src_class_init): * gst/gdp/gstgdppay.c: (gst_gdp_pay_class_init): * gst/playback/gstdecodebin2.c: (gst_decode_bin_class_init): * gst/playback/gstplaybasebin.c: (gst_play_base_bin_class_init), (preroll_unlinked): * gst/playback/gstplaybin.c: (gst_play_bin_class_init): * gst/playback/gstplaybin2.c: (gst_play_bin_class_init): * gst/playback/gstplaysink.c: (gst_play_sink_class_init): * gst/playback/gstqueue2.c: (gst_queue_class_init): * gst/playback/gststreaminfo.c: (gst_stream_info_class_init): * gst/playback/gststreamselector.c: (gst_selector_pad_class_init), (gst_stream_selector_class_init): * gst/playback/gsturidecodebin.c: (gst_uri_decode_bin_class_init): * gst/subparse/gstsubparse.c: (gst_sub_parse_class_init): * gst/tcp/gstmultifdsink.c: (gst_multi_fd_sink_class_init): * gst/tcp/gsttcpclientsink.c: (gst_tcp_client_sink_class_init): * gst/tcp/gsttcpclientsrc.c: (gst_tcp_client_src_class_init): * gst/tcp/gsttcpserversink.c: (gst_tcp_server_sink_class_init): * gst/tcp/gsttcpserversrc.c: (gst_tcp_server_src_class_init): * gst/videorate/gstvideorate.c: (gst_video_rate_class_init): * gst/videoscale/gstvideoscale.c: (gst_video_scale_class_init): * gst/videotestsrc/gstvideotestsrc.c: (gst_video_test_src_class_init): * gst/volume/gstvolume.c: (gst_volume_class_init): * sys/v4l/gstv4lelement.c: (gst_v4lelement_class_init): * sys/v4l/gstv4lmjpegsink.c: (gst_v4lmjpegsink_class_init): * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_class_init): * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_class_init): * sys/ximage/ximagesink.c: (gst_ximagesink_class_init): * sys/xvimage/xvimagesink.c: (gst_xvimagesink_class_init): Use G_PARAM_STATIC_STRINGS everywhere for GParamSpecs that use static strings (i.e. all). This gives us less memory usage, fewer allocations and thus less memory defragmentation. Depend on core CVS for this. Fixes bug #523806.
2008-03-22 15:00:53 +00:00
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
#if 0
/* Do we really need this toc adjustment stuff as properties? does the user
* have a chance to set it in practice, e.g. when using sound-juicer, rb,
* totem, whatever? Shouldn't we rather use environment variables
* for this? (tpm) */
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_TOC_OFFSET,
g_param_spec_int ("toc-offset", "Table of contents offset",
"Add <n> sectors to the values reported", G_MININT, G_MAXINT, 0,
Use G_PARAM_STATIC_STRINGS everywhere for GParamSpecs that use static strings (i.e. all). This gives us less memory u... Original commit message from CVS: * configure.ac: * ext/alsa/gstalsamixerelement.c: (gst_alsa_mixer_element_class_init): * ext/alsa/gstalsasink.c: (gst_alsasink_class_init): * ext/alsa/gstalsasrc.c: (gst_alsasrc_class_init): * ext/cdparanoia/gstcdparanoiasrc.c: (gst_cd_paranoia_src_class_init): * ext/gio/gstgiosink.c: (gst_gio_sink_class_init): * ext/gio/gstgiosrc.c: (gst_gio_src_class_init): * ext/gio/gstgiostreamsink.c: (gst_gio_stream_sink_class_init): * ext/gio/gstgiostreamsrc.c: (gst_gio_stream_src_class_init): * ext/gnomevfs/gstgnomevfssink.c: (gst_gnome_vfs_sink_class_init): * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnome_vfs_src_class_init): * ext/ogg/gstoggmux.c: (gst_ogg_mux_class_init): * ext/pango/gsttextoverlay.c: (gst_text_overlay_class_init): * ext/pango/gsttextrender.c: (gst_text_render_class_init): * ext/theora/theoradec.c: (gst_theora_dec_class_init): * ext/theora/theoraenc.c: (gst_theora_enc_class_init): * ext/theora/theoraparse.c: (gst_theora_parse_class_init): * ext/vorbis/vorbisenc.c: (gst_vorbis_enc_class_init): * gst-libs/gst/audio/gstaudiofiltertemplate.c: (gst_audio_filter_template_class_init): * gst-libs/gst/audio/gstbaseaudiosink.c: (gst_base_audio_sink_class_init): * gst-libs/gst/audio/gstbaseaudiosrc.c: (gst_base_audio_src_class_init): * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_class_init): * gst-libs/gst/interfaces/mixertrack.c: (gst_mixer_track_class_init): * gst-libs/gst/rtp/gstbasertpdepayload.c: (gst_base_rtp_depayload_class_init): * gst-libs/gst/rtp/gstbasertppayload.c: (gst_basertppayload_class_init): * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_class_init): * gst/audiorate/gstaudiorate.c: (gst_audio_rate_class_init): * gst/audioresample/gstaudioresample.c: (gst_audioresample_class_init): * gst/audiotestsrc/gstaudiotestsrc.c: (gst_audio_test_src_class_init): * gst/gdp/gstgdppay.c: (gst_gdp_pay_class_init): * gst/playback/gstdecodebin2.c: (gst_decode_bin_class_init): * gst/playback/gstplaybasebin.c: (gst_play_base_bin_class_init), (preroll_unlinked): * gst/playback/gstplaybin.c: (gst_play_bin_class_init): * gst/playback/gstplaybin2.c: (gst_play_bin_class_init): * gst/playback/gstplaysink.c: (gst_play_sink_class_init): * gst/playback/gstqueue2.c: (gst_queue_class_init): * gst/playback/gststreaminfo.c: (gst_stream_info_class_init): * gst/playback/gststreamselector.c: (gst_selector_pad_class_init), (gst_stream_selector_class_init): * gst/playback/gsturidecodebin.c: (gst_uri_decode_bin_class_init): * gst/subparse/gstsubparse.c: (gst_sub_parse_class_init): * gst/tcp/gstmultifdsink.c: (gst_multi_fd_sink_class_init): * gst/tcp/gsttcpclientsink.c: (gst_tcp_client_sink_class_init): * gst/tcp/gsttcpclientsrc.c: (gst_tcp_client_src_class_init): * gst/tcp/gsttcpserversink.c: (gst_tcp_server_sink_class_init): * gst/tcp/gsttcpserversrc.c: (gst_tcp_server_src_class_init): * gst/videorate/gstvideorate.c: (gst_video_rate_class_init): * gst/videoscale/gstvideoscale.c: (gst_video_scale_class_init): * gst/videotestsrc/gstvideotestsrc.c: (gst_video_test_src_class_init): * gst/volume/gstvolume.c: (gst_volume_class_init): * sys/v4l/gstv4lelement.c: (gst_v4lelement_class_init): * sys/v4l/gstv4lmjpegsink.c: (gst_v4lmjpegsink_class_init): * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_class_init): * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_class_init): * sys/ximage/ximagesink.c: (gst_ximagesink_class_init): * sys/xvimage/xvimagesink.c: (gst_xvimagesink_class_init): Use G_PARAM_STATIC_STRINGS everywhere for GParamSpecs that use static strings (i.e. all). This gives us less memory usage, fewer allocations and thus less memory defragmentation. Depend on core CVS for this. Fixes bug #523806.
2008-03-22 15:00:53 +00:00
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_TOC_BIAS,
g_param_spec_boolean ("toc-bias", "Table of contents bias",
"Assume that the beginning offset of track 1 as reported in the TOC "
"will be addressed as LBA 0. Necessary for some Toshiba drives to "
Use G_PARAM_STATIC_STRINGS everywhere for GParamSpecs that use static strings (i.e. all). This gives us less memory u... Original commit message from CVS: * configure.ac: * ext/alsa/gstalsamixerelement.c: (gst_alsa_mixer_element_class_init): * ext/alsa/gstalsasink.c: (gst_alsasink_class_init): * ext/alsa/gstalsasrc.c: (gst_alsasrc_class_init): * ext/cdparanoia/gstcdparanoiasrc.c: (gst_cd_paranoia_src_class_init): * ext/gio/gstgiosink.c: (gst_gio_sink_class_init): * ext/gio/gstgiosrc.c: (gst_gio_src_class_init): * ext/gio/gstgiostreamsink.c: (gst_gio_stream_sink_class_init): * ext/gio/gstgiostreamsrc.c: (gst_gio_stream_src_class_init): * ext/gnomevfs/gstgnomevfssink.c: (gst_gnome_vfs_sink_class_init): * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnome_vfs_src_class_init): * ext/ogg/gstoggmux.c: (gst_ogg_mux_class_init): * ext/pango/gsttextoverlay.c: (gst_text_overlay_class_init): * ext/pango/gsttextrender.c: (gst_text_render_class_init): * ext/theora/theoradec.c: (gst_theora_dec_class_init): * ext/theora/theoraenc.c: (gst_theora_enc_class_init): * ext/theora/theoraparse.c: (gst_theora_parse_class_init): * ext/vorbis/vorbisenc.c: (gst_vorbis_enc_class_init): * gst-libs/gst/audio/gstaudiofiltertemplate.c: (gst_audio_filter_template_class_init): * gst-libs/gst/audio/gstbaseaudiosink.c: (gst_base_audio_sink_class_init): * gst-libs/gst/audio/gstbaseaudiosrc.c: (gst_base_audio_src_class_init): * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_class_init): * gst-libs/gst/interfaces/mixertrack.c: (gst_mixer_track_class_init): * gst-libs/gst/rtp/gstbasertpdepayload.c: (gst_base_rtp_depayload_class_init): * gst-libs/gst/rtp/gstbasertppayload.c: (gst_basertppayload_class_init): * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_class_init): * gst/audiorate/gstaudiorate.c: (gst_audio_rate_class_init): * gst/audioresample/gstaudioresample.c: (gst_audioresample_class_init): * gst/audiotestsrc/gstaudiotestsrc.c: (gst_audio_test_src_class_init): * gst/gdp/gstgdppay.c: (gst_gdp_pay_class_init): * gst/playback/gstdecodebin2.c: (gst_decode_bin_class_init): * gst/playback/gstplaybasebin.c: (gst_play_base_bin_class_init), (preroll_unlinked): * gst/playback/gstplaybin.c: (gst_play_bin_class_init): * gst/playback/gstplaybin2.c: (gst_play_bin_class_init): * gst/playback/gstplaysink.c: (gst_play_sink_class_init): * gst/playback/gstqueue2.c: (gst_queue_class_init): * gst/playback/gststreaminfo.c: (gst_stream_info_class_init): * gst/playback/gststreamselector.c: (gst_selector_pad_class_init), (gst_stream_selector_class_init): * gst/playback/gsturidecodebin.c: (gst_uri_decode_bin_class_init): * gst/subparse/gstsubparse.c: (gst_sub_parse_class_init): * gst/tcp/gstmultifdsink.c: (gst_multi_fd_sink_class_init): * gst/tcp/gsttcpclientsink.c: (gst_tcp_client_sink_class_init): * gst/tcp/gsttcpclientsrc.c: (gst_tcp_client_src_class_init): * gst/tcp/gsttcpserversink.c: (gst_tcp_server_sink_class_init): * gst/tcp/gsttcpserversrc.c: (gst_tcp_server_src_class_init): * gst/videorate/gstvideorate.c: (gst_video_rate_class_init): * gst/videoscale/gstvideoscale.c: (gst_video_scale_class_init): * gst/videotestsrc/gstvideotestsrc.c: (gst_video_test_src_class_init): * gst/volume/gstvolume.c: (gst_volume_class_init): * sys/v4l/gstv4lelement.c: (gst_v4lelement_class_init): * sys/v4l/gstv4lmjpegsink.c: (gst_v4lmjpegsink_class_init): * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_class_init): * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_class_init): * sys/ximage/ximagesink.c: (gst_ximagesink_class_init): * sys/xvimage/xvimagesink.c: (gst_xvimagesink_class_init): Use G_PARAM_STATIC_STRINGS everywhere for GParamSpecs that use static strings (i.e. all). This gives us less memory usage, fewer allocations and thus less memory defragmentation. Depend on core CVS for this. Fixes bug #523806.
2008-03-22 15:00:53 +00:00
"get track boundaries", FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
#endif
gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&gst_audio_cd_src_src_template));
element_class->set_index = GST_DEBUG_FUNCPTR (gst_audio_cd_src_set_index);
element_class->get_index = GST_DEBUG_FUNCPTR (gst_audio_cd_src_get_index);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
basesrc_class->start = GST_DEBUG_FUNCPTR (gst_audio_cd_src_start);
basesrc_class->stop = GST_DEBUG_FUNCPTR (gst_audio_cd_src_stop);
basesrc_class->query = GST_DEBUG_FUNCPTR (gst_audio_cd_src_query);
basesrc_class->event = GST_DEBUG_FUNCPTR (gst_audio_cd_src_handle_event);
basesrc_class->do_seek = GST_DEBUG_FUNCPTR (gst_audio_cd_src_do_seek);
basesrc_class->is_seekable = GST_DEBUG_FUNCPTR (gst_audio_cd_src_is_seekable);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
pushsrc_class->create = GST_DEBUG_FUNCPTR (gst_audio_cd_src_create);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
static void
gst_audio_cd_src_init (GstAudioCdSrc * src)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
/* we're not live and we operate in time */
gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME);
gst_base_src_set_live (GST_BASE_SRC (src), FALSE);
2011-11-28 17:24:03 +00:00
GST_OBJECT_FLAG_SET (src, GST_ELEMENT_FLAG_INDEXABLE);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
src->device = NULL;
src->mode = GST_AUDIO_CD_SRC_MODE_NORMAL;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
src->uri_track = -1;
}
static void
gst_audio_cd_src_finalize (GObject * obj)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
GstAudioCdSrc *cddasrc = GST_AUDIO_CD_SRC (obj);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
g_free (cddasrc->uri);
g_free (cddasrc->device);
2009-08-28 17:06:57 +00:00
if (cddasrc->index)
gst_object_unref (cddasrc->index);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
G_OBJECT_CLASS (parent_class)->finalize (obj);
}
static void
gst_audio_cd_src_set_device (GstAudioCdSrc * src, const gchar * device)
{
if (src->device)
g_free (src->device);
src->device = NULL;
if (!device)
return;
/* skip multiple slashes */
while (*device == '/' && *(device + 1) == '/')
device++;
#ifdef __sun
/*
* On Solaris, /dev/rdsk is used for accessing the CD device, but some
* applications pass in /dev/dsk, so correct.
*/
if (strncmp (device, "/dev/dsk", 8) == 0) {
gchar *rdsk_value;
rdsk_value = g_strdup_printf ("/dev/rdsk%s", device + 8);
src->device = g_strdup (rdsk_value);
g_free (rdsk_value);
} else {
#endif
src->device = g_strdup (device);
#ifdef __sun
}
#endif
}
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
static void
gst_audio_cd_src_set_property (GObject * object, guint prop_id,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
const GValue * value, GParamSpec * pspec)
{
GstAudioCdSrc *src = GST_AUDIO_CD_SRC (object);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GST_OBJECT_LOCK (src);
switch (prop_id) {
case ARG_MODE:{
src->mode = g_value_get_enum (value);
break;
}
case ARG_DEVICE:{
const gchar *dev = g_value_get_string (value);
gst_audio_cd_src_set_device (src, dev);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
break;
}
case ARG_TRACK:{
guint track = g_value_get_uint (value);
if (src->num_tracks > 0 && track > src->num_tracks) {
g_warning ("Invalid track %u", track);
} else if (track > 0 && src->tracks != NULL) {
src->cur_sector = src->tracks[track - 1].start;
src->uri_track = track;
} else {
src->uri_track = track; /* seek will be done in start() */
}
break;
}
case ARG_TOC_OFFSET:{
src->toc_offset = g_value_get_int (value);
break;
}
case ARG_TOC_BIAS:{
src->toc_bias = g_value_get_boolean (value);
break;
}
default:{
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
GST_OBJECT_UNLOCK (src);
}
static void
gst_audio_cd_src_get_property (GObject * object, guint prop_id,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GValue * value, GParamSpec * pspec)
{
GstAudioCdSrcClass *klass = GST_AUDIO_CD_SRC_GET_CLASS (object);
GstAudioCdSrc *src = GST_AUDIO_CD_SRC (object);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GST_OBJECT_LOCK (src);
switch (prop_id) {
case ARG_MODE:
g_value_set_enum (value, src->mode);
break;
case ARG_DEVICE:{
if (src->device == NULL && klass->get_default_device != NULL) {
gchar *d = klass->get_default_device (src);
if (d != NULL) {
g_value_set_string (value, DEFAULT_DEVICE);
g_free (d);
break;
}
}
if (src->device == NULL)
g_value_set_string (value, DEFAULT_DEVICE);
else
g_value_set_string (value, src->device);
break;
}
case ARG_TRACK:{
if (src->num_tracks <= 0 && src->uri_track > 0) {
g_value_set_uint (value, src->uri_track);
} else {
g_value_set_uint (value, src->cur_track + 1);
}
break;
}
case ARG_TOC_OFFSET:
g_value_set_int (value, src->toc_offset);
break;
case ARG_TOC_BIAS:
g_value_set_boolean (value, src->toc_bias);
break;
default:{
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
GST_OBJECT_UNLOCK (src);
}
static gint
gst_audio_cd_src_get_track_from_sector (GstAudioCdSrc * src, gint sector)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
gint i;
for (i = 0; i < src->num_tracks; ++i) {
if (sector >= src->tracks[i].start && sector <= src->tracks[i].end)
return i;
}
return -1;
}
static gboolean
gst_audio_cd_src_convert (GstAudioCdSrc * src, GstFormat src_format,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
gint64 src_val, GstFormat dest_format, gint64 * dest_val)
{
gboolean started;
GST_LOG_OBJECT (src, "converting value %" G_GINT64_FORMAT " from %s into %s",
src_val, gst_format_get_name (src_format),
gst_format_get_name (dest_format));
if (src_format == dest_format) {
*dest_val = src_val;
return TRUE;
}
2011-12-06 12:59:11 +00:00
started =
GST_OBJECT_FLAG_IS_SET (GST_BASE_SRC (src), GST_BASE_SRC_FLAG_STARTED);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
if (src_format == track_format) {
if (!started)
goto not_started;
if (src_val < 0 || src_val >= src->num_tracks) {
GST_DEBUG_OBJECT (src, "track number %d out of bounds", (gint) src_val);
goto wrong_value;
}
src_format = GST_FORMAT_DEFAULT;
src_val = src->tracks[src_val].start * SAMPLES_PER_SECTOR;
} else if (src_format == sector_format) {
src_format = GST_FORMAT_DEFAULT;
src_val = src_val * SAMPLES_PER_SECTOR;
}
if (src_format == dest_format) {
*dest_val = src_val;
goto done;
}
switch (src_format) {
case GST_FORMAT_BYTES:
/* convert to samples (4 bytes per sample) */
src_val = src_val >> 2;
/* fallthrough */
case GST_FORMAT_DEFAULT:{
switch (dest_format) {
case GST_FORMAT_BYTES:{
if (src_val < 0) {
GST_DEBUG_OBJECT (src, "sample source value negative");
goto wrong_value;
}
*dest_val = src_val << 2; /* 4 bytes per sample */
break;
}
case GST_FORMAT_TIME:{
*dest_val = gst_util_uint64_scale_int (src_val, GST_SECOND, 44100);
break;
}
default:{
gint64 sector = src_val / SAMPLES_PER_SECTOR;
if (dest_format == sector_format) {
*dest_val = sector;
} else if (dest_format == track_format) {
if (!started)
goto not_started;
*dest_val = gst_audio_cd_src_get_track_from_sector (src, sector);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
} else {
goto unknown_format;
}
break;
}
}
break;
}
case GST_FORMAT_TIME:{
gint64 sample_offset;
if (src_val == GST_CLOCK_TIME_NONE) {
GST_DEBUG_OBJECT (src, "source time value invalid");
goto wrong_value;
}
sample_offset = gst_util_uint64_scale_int (src_val, 44100, GST_SECOND);
switch (dest_format) {
case GST_FORMAT_BYTES:{
*dest_val = sample_offset << 2; /* 4 bytes per sample */
break;
}
case GST_FORMAT_DEFAULT:{
*dest_val = sample_offset;
break;
}
default:{
gint64 sector = sample_offset / SAMPLES_PER_SECTOR;
if (dest_format == sector_format) {
*dest_val = sector;
} else if (dest_format == track_format) {
if (!started)
goto not_started;
*dest_val = gst_audio_cd_src_get_track_from_sector (src, sector);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
} else {
goto unknown_format;
}
break;
}
}
break;
}
default:{
goto unknown_format;
}
}
done:
{
GST_LOG_OBJECT (src, "returning %" G_GINT64_FORMAT, *dest_val);
return TRUE;
}
unknown_format:
{
GST_DEBUG_OBJECT (src, "conversion failed: %s", "unsupported format");
return FALSE;
}
wrong_value:
{
GST_DEBUG_OBJECT (src, "conversion failed: %s",
"source value not within allowed range");
return FALSE;
}
not_started:
{
GST_DEBUG_OBJECT (src, "conversion failed: %s",
"cannot do this conversion, device not open");
return FALSE;
}
}
static gboolean
gst_audio_cd_src_query (GstBaseSrc * basesrc, GstQuery * query)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
GstAudioCdSrc *src = GST_AUDIO_CD_SRC (basesrc);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
gboolean started;
2011-12-06 12:59:11 +00:00
started = GST_OBJECT_FLAG_IS_SET (basesrc, GST_BASE_SRC_FLAG_STARTED);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GST_LOG_OBJECT (src, "handling %s query",
gst_query_type_get_name (GST_QUERY_TYPE (query)));
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
switch (GST_QUERY_TYPE (query)) {
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
case GST_QUERY_DURATION:{
GstFormat dest_format;
gint64 dest_val;
guint sectors;
gst_query_parse_duration (query, &dest_format, NULL);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
if (!started)
return FALSE;
g_assert (src->tracks != NULL);
if (dest_format == track_format) {
GST_LOG_OBJECT (src, "duration: %d tracks", src->num_tracks);
gst_query_set_duration (query, track_format, src->num_tracks);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
return TRUE;
}
if (src->cur_track < 0 || src->cur_track >= src->num_tracks)
return FALSE;
if (src->mode == GST_AUDIO_CD_SRC_MODE_NORMAL) {
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
sectors = src->tracks[src->cur_track].end -
src->tracks[src->cur_track].start + 1;
} else {
sectors = src->tracks[src->num_tracks - 1].end -
src->tracks[0].start + 1;
}
/* ... and convert into final format */
if (!gst_audio_cd_src_convert (src, sector_format, sectors,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
dest_format, &dest_val)) {
return FALSE;
}
gst_query_set_duration (query, dest_format, dest_val);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GST_LOG ("duration: %u sectors, %" G_GINT64_FORMAT " in format %s",
sectors, dest_val, gst_format_get_name (dest_format));
break;
}
case GST_QUERY_POSITION:{
GstFormat dest_format;
gint64 pos_sector;
gint64 dest_val;
gst_query_parse_position (query, &dest_format, NULL);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
if (!started)
return FALSE;
g_assert (src->tracks != NULL);
if (dest_format == track_format) {
GST_LOG_OBJECT (src, "position: track %d", src->cur_track);
gst_query_set_position (query, track_format, src->cur_track);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
return TRUE;
}
if (src->cur_track < 0 || src->cur_track >= src->num_tracks)
return FALSE;
if (src->mode == GST_AUDIO_CD_SRC_MODE_NORMAL) {
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
pos_sector = src->cur_sector - src->tracks[src->cur_track].start;
} else {
pos_sector = src->cur_sector - src->tracks[0].start;
}
if (!gst_audio_cd_src_convert (src, sector_format, pos_sector,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
dest_format, &dest_val)) {
return FALSE;
}
gst_query_set_position (query, dest_format, dest_val);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GST_LOG ("position: sector %u, %" G_GINT64_FORMAT " in format %s",
(guint) pos_sector, dest_val, gst_format_get_name (dest_format));
break;
}
case GST_QUERY_CONVERT:{
GstFormat src_format, dest_format;
gint64 src_val, dest_val;
gst_query_parse_convert (query, &src_format, &src_val, &dest_format,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
NULL);
if (!gst_audio_cd_src_convert (src, src_format, src_val, dest_format,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
&dest_val)) {
return FALSE;
}
gst_query_set_convert (query, src_format, src_val, dest_format, dest_val);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
break;
}
default:{
GST_DEBUG_OBJECT (src, "unhandled query, chaining up to parent class");
return GST_BASE_SRC_CLASS (parent_class)->query (basesrc, query);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
}
return TRUE;
}
static gboolean
gst_audio_cd_src_is_seekable (GstBaseSrc * basesrc)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
return TRUE;
}
static gboolean
gst_audio_cd_src_do_seek (GstBaseSrc * basesrc, GstSegment * segment)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
GstAudioCdSrc *src = GST_AUDIO_CD_SRC (basesrc);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
gint64 seek_sector;
GST_DEBUG_OBJECT (src, "segment %" GST_TIME_FORMAT "-%" GST_TIME_FORMAT,
GST_TIME_ARGS (segment->start), GST_TIME_ARGS (segment->stop));
if (!gst_audio_cd_src_convert (src, GST_FORMAT_TIME, segment->start,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
sector_format, &seek_sector)) {
GST_WARNING_OBJECT (src, "conversion failed");
return FALSE;
}
/* we should only really be called when open */
g_assert (src->cur_track >= 0 && src->cur_track < src->num_tracks);
switch (src->mode) {
case GST_AUDIO_CD_SRC_MODE_NORMAL:
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
seek_sector += src->tracks[src->cur_track].start;
break;
case GST_AUDIO_CD_SRC_MODE_CONTINUOUS:
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
seek_sector += src->tracks[0].start;
break;
default:
g_return_val_if_reached (FALSE);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
src->cur_sector = (gint) seek_sector;
GST_DEBUG_OBJECT (src, "seek'd to sector %d", src->cur_sector);
return TRUE;
}
static gboolean
gst_audio_cd_src_handle_track_seek (GstAudioCdSrc * src, gdouble rate,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GstSeekFlags flags, GstSeekType start_type, gint64 start,
GstSeekType stop_type, gint64 stop)
{
GstBaseSrc *basesrc = GST_BASE_SRC (src);
GstEvent *event;
if ((flags & GST_SEEK_FLAG_SEGMENT) == GST_SEEK_FLAG_SEGMENT) {
gint64 start_time = -1;
gint64 stop_time = -1;
if (src->mode != GST_AUDIO_CD_SRC_MODE_CONTINUOUS) {
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GST_DEBUG_OBJECT (src, "segment seek in track format is only "
"supported in CONTINUOUS mode, not in mode %d", src->mode);
return FALSE;
}
switch (start_type) {
case GST_SEEK_TYPE_SET:
if (!gst_audio_cd_src_convert (src, track_format, start,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GST_FORMAT_TIME, &start_time)) {
GST_DEBUG_OBJECT (src, "cannot convert track %d to time",
(gint) start);
return FALSE;
}
break;
case GST_SEEK_TYPE_END:
if (!gst_audio_cd_src_convert (src, track_format,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
src->num_tracks - start - 1, GST_FORMAT_TIME, &start_time)) {
GST_DEBUG_OBJECT (src, "cannot convert track %d to time",
(gint) start);
return FALSE;
}
start_type = GST_SEEK_TYPE_SET;
break;
case GST_SEEK_TYPE_NONE:
start_time = -1;
break;
default:
g_return_val_if_reached (FALSE);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
switch (stop_type) {
case GST_SEEK_TYPE_SET:
if (!gst_audio_cd_src_convert (src, track_format, stop,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GST_FORMAT_TIME, &stop_time)) {
GST_DEBUG_OBJECT (src, "cannot convert track %d to time",
(gint) stop);
return FALSE;
}
break;
case GST_SEEK_TYPE_END:
if (!gst_audio_cd_src_convert (src, track_format,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
src->num_tracks - stop - 1, GST_FORMAT_TIME, &stop_time)) {
GST_DEBUG_OBJECT (src, "cannot convert track %d to time",
(gint) stop);
return FALSE;
}
stop_type = GST_SEEK_TYPE_SET;
break;
case GST_SEEK_TYPE_NONE:
stop_time = -1;
break;
default:
g_return_val_if_reached (FALSE);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
GST_LOG_OBJECT (src, "seek segment %" GST_TIME_FORMAT "-%" GST_TIME_FORMAT,
GST_TIME_ARGS (start_time), GST_TIME_ARGS (stop_time));
/* send fake segment seek event in TIME format to
* base class, which will hopefully handle the rest */
event = gst_event_new_seek (rate, GST_FORMAT_TIME, flags, start_type,
start_time, stop_type, stop_time);
return GST_BASE_SRC_CLASS (parent_class)->event (basesrc, event);
}
/* not a segment seek */
if (start_type == GST_SEEK_TYPE_NONE) {
GST_LOG_OBJECT (src, "start seek type is NONE, nothing to do");
return TRUE;
}
if (stop_type != GST_SEEK_TYPE_NONE) {
GST_WARNING_OBJECT (src, "ignoring stop seek type (expected NONE)");
}
if (start < 0 || start >= src->num_tracks) {
GST_DEBUG_OBJECT (src, "invalid track %" G_GINT64_FORMAT, start);
return FALSE;
}
Printf format fixes. Original commit message from CVS: * ext/alsa/gstalsadeviceprobe.c: (gst_alsa_device_property_probe_get_values): * ext/alsa/gstalsasink.c: (set_hwparams): * ext/ogg/gstoggdemux.c: (gst_ogg_demux_chain_elem_pad), (gst_ogg_chain_new_stream), (gst_ogg_demux_read_chain): * ext/ogg/gstoggmux.c: (gst_ogg_mux_send_headers), (gst_ogg_mux_process_best_pad): * ext/ogg/gstoggparse.c: (gst_ogg_parse_new_stream), (gst_ogg_parse_chain): * ext/ogg/gstogmparse.c: (gst_ogm_parse_stream_header): * ext/vorbis/vorbisdec.c: (vorbis_handle_data_packet): * ext/vorbis/vorbisenc.c: (gst_vorbis_enc_setup), (gst_vorbis_enc_buffer_check_discontinuous): * ext/vorbis/vorbisparse.c: (vorbis_parse_src_query): * gst-libs/gst/audio/gstbaseaudiosink.c: (gst_base_audio_sink_render): * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_handle_track_seek): * gst-libs/gst/rtp/gstbasertpdepayload.c: (gst_base_rtp_depayload_push_full): * gst-libs/gst/rtp/gstbasertppayload.c: (gst_basertppayload_push): * gst/audioresample/resample.c: (resample_input_pushthrough): * gst/playback/gstplaybasebin.c: (queue_out_of_data): * gst/tcp/gstmultifdsink.c: (gst_multi_fd_sink_handle_clients): * gst/typefind/gsttypefindfunctions.c: (mp3_type_find_at_offset), (wavpack_type_find): * gst/videotestsrc/gstvideotestsrc.c: (gst_video_test_src_create): * sys/xvimage/xvimagesink.c: (gst_xvimage_buffer_destroy), (gst_xvimagesink_check_xshm_calls), (gst_xvimagesink_xvimage_new): * tests/check/elements/volume.c: (GST_START_TEST): Printf format fixes.
2006-10-05 15:55:21 +00:00
GST_DEBUG_OBJECT (src, "seeking to track %" G_GINT64_FORMAT, start + 1);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
src->cur_sector = src->tracks[start].start;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GST_DEBUG_OBJECT (src, "starting at sector %d", src->cur_sector);
if (src->cur_track != start) {
src->cur_track = (gint) start;
src->uri_track = -1;
src->prev_track = -1;
gst_audio_cd_src_update_duration (src);
} else {
GST_DEBUG_OBJECT (src, "is current track, just seeking back to start");
}
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
/* send fake segment seek event in TIME format to
* base class (so we get a newsegment etc.) */
event = gst_event_new_seek (rate, GST_FORMAT_TIME, flags,
GST_SEEK_TYPE_SET, 0, GST_SEEK_TYPE_NONE, -1);
return GST_BASE_SRC_CLASS (parent_class)->event (basesrc, event);
}
static gboolean
gst_audio_cd_src_handle_event (GstBaseSrc * basesrc, GstEvent * event)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
GstAudioCdSrc *src = GST_AUDIO_CD_SRC (basesrc);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
gboolean ret = FALSE;
GST_LOG_OBJECT (src, "handling %s event", GST_EVENT_TYPE_NAME (event));
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_SEEK:{
GstSeekType start_type, stop_type;
GstSeekFlags flags;
GstFormat format;
gdouble rate;
gint64 start, stop;
2011-12-06 12:59:11 +00:00
if (!GST_OBJECT_FLAG_IS_SET (basesrc, GST_BASE_SRC_FLAG_STARTED)) {
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GST_DEBUG_OBJECT (src, "seek failed: device not open");
break;
}
gst_event_parse_seek (event, &rate, &format, &flags, &start_type, &start,
&stop_type, &stop);
if (format == sector_format) {
GST_DEBUG_OBJECT (src, "seek in sector format not supported");
break;
}
if (format == track_format) {
ret = gst_audio_cd_src_handle_track_seek (src, rate, flags,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
start_type, start, stop_type, stop);
} else {
GST_LOG_OBJECT (src, "let base class handle seek in %s format",
gst_format_get_name (format));
event = gst_event_ref (event);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
ret = GST_BASE_SRC_CLASS (parent_class)->event (basesrc, event);
}
break;
}
default:{
GST_LOG_OBJECT (src, "let base class handle event");
ret = GST_BASE_SRC_CLASS (parent_class)->event (basesrc, event);
break;
}
}
return ret;
}
ext/gnomevfs/: Fix URI interface implementation return type. Original commit message from CVS: 2006-10-10 Zaheer Abbas Merali <zaheerabbas at merali dot org> Patch by: Josep Torre Valles <josep@fluendo.com> * ext/gnomevfs/gstgnomevfssink.c: * ext/gnomevfs/gstgnomevfssrc.c: Fix URI interface implementation return type. * ext/pango/gsttextoverlay.c: (gst_text_overlay_set_property): Fix what looks like a copy/paste issue when assigning values. * gst-libs/gst/audio/gstaudiofiltertemplate.c: (gst_audio_filter_template_get_type): Cast to prevent Forte warnings. * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_create): Fix URI interface implementation return type. gst_pad_query_position requires a signed integer pointer as 3rd parameter, GstClockTime is unsigned. * gst/audioconvert/audioconvert.c: Fix integer overflow when treated as signed. * gst/audioresample/resample.c: (resample_add_input_data): Cast to prevent warnings on Forte. * gst/ffmpegcolorspace/imgconvert.c: (build_rgb_palette): Fix integer overflow when treated as signed. * gst/ffmpegcolorspace/imgconvert_template.h: Fix integer overflow when treated as signed. RGBA_OUT shifts bits. * gst/playback/gstdecodebin.c: (queue_filled_cb), (cleanup_decodebin): Who initialises a guint to -1! Cast function pointers to prevent warnings on Forte. * gst/playback/gstplaybasebin.c: (queue_deadlock_check), (queue_threshold_reached): Cast function pointers correctly to prevent warnings on Forte. * gst/playback/gststreaminfo.c: (gst_stream_info_dispose): Cast function pointers correctly to prevent warnings on Forte. * gst/subparse/gstssaparse.c: (gst_ssa_parse_setcaps): Obvious change to unsigned, 0xEF > max signed char. * gst/tcp/gstmultifdsink.c: (get_buffers_max), (count_burst_unit): GstClockTime is unsigned, initialise correctly. * gst/tcp/gsttcp.c: (gst_tcp_socket_write): Cast so pointer arithemetic doesn't cause warnings on Forte. * gst/videorate/gstvideorate.c: Use correct return value. * tests/examples/seek/scrubby.c: GstClockTime is unsigned, initialise correctly.
2006-10-10 12:49:03 +00:00
static GstURIType
gst_audio_cd_src_uri_get_type (GType type)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
return GST_URI_SRC;
}
static const gchar *const *
gst_audio_cd_src_uri_get_protocols (GType type)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
static const gchar *protocols[] = { "cdda", NULL };
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
return protocols;
}
static gchar *
gst_audio_cd_src_uri_get_uri (GstURIHandler * handler)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
GstAudioCdSrc *src = GST_AUDIO_CD_SRC (handler);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GST_OBJECT_LOCK (src);
/* FIXME: can we get rid of all that here and just return a copy of the
* existing URI perhaps? */
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
g_free (src->uri);
2011-12-06 12:59:11 +00:00
if (GST_OBJECT_FLAG_IS_SET (GST_BASE_SRC (src), GST_BASE_SRC_FLAG_STARTED)) {
src->uri =
g_strdup_printf ("cdda://%s#%d", src->device,
(src->uri_track > 0) ? src->uri_track : 1);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
} else {
src->uri = g_strdup ("cdda://1");
}
GST_OBJECT_UNLOCK (src);
return g_strdup (src->uri);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
/* Note: gst_element_make_from_uri() might call us with just 'cdda://' as
* URI and expects us to return TRUE then (and this might be in any state) */
/* We accept URIs of the format cdda://(device#track)|(track) */
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
static gboolean
gst_audio_cd_src_uri_set_uri (GstURIHandler * handler, const gchar * uri,
GError ** error)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
GstAudioCdSrc *src = GST_AUDIO_CD_SRC (handler);
const gchar *location;
gchar *track_number;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GST_OBJECT_LOCK (src);
location = uri + 7;
track_number = g_strrstr (location, "#");
src->uri_track = 0;
/* FIXME 0.11: ignore URI fragments that look like device paths for
* the benefit of rhythmbox and possibly other applications.
*/
if (track_number && track_number[1] != '/') {
gchar *device, *nuri = g_strdup (uri);
track_number = nuri + (track_number - uri);
*track_number = '\0';
device = gst_uri_get_location (nuri);
gst_audio_cd_src_set_device (src, device);
g_free (device);
src->uri_track = strtol (track_number + 1, NULL, 10);
g_free (nuri);
} else {
if (*location == '\0')
src->uri_track = 1;
else
src->uri_track = strtol (location, NULL, 10);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
if (src->uri_track < 1)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
goto failed;
if (src->num_tracks > 0
&& src->tracks != NULL && src->uri_track > src->num_tracks)
goto failed;
if (src->uri_track > 0 && src->tracks != NULL) {
GST_OBJECT_UNLOCK (src);
gst_pad_send_event (GST_BASE_SRC_PAD (src),
gst_event_new_seek (1.0, track_format, GST_SEEK_FLAG_FLUSH,
GST_SEEK_TYPE_SET, src->uri_track - 1, GST_SEEK_TYPE_NONE, -1));
} else {
/* seek will be done in start() */
GST_OBJECT_UNLOCK (src);
}
GST_LOG_OBJECT (handler, "successfully handled uri '%s'", uri);
return TRUE;
failed:
{
GST_OBJECT_UNLOCK (src);
GST_DEBUG_OBJECT (src, "cannot handle URI '%s'", uri);
g_set_error_literal (error, GST_URI_ERROR, GST_URI_ERROR_BAD_URI,
"Could not handle CDDA URI");
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
return FALSE;
}
}
static void
gst_audio_cd_src_uri_handler_init (gpointer g_iface, gpointer iface_data)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
GstURIHandlerInterface *iface = (GstURIHandlerInterface *) g_iface;
iface->get_type = gst_audio_cd_src_uri_get_type;
iface->get_uri = gst_audio_cd_src_uri_get_uri;
iface->set_uri = gst_audio_cd_src_uri_set_uri;
iface->get_protocols = gst_audio_cd_src_uri_get_protocols;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
/**
* gst_audio_cd_src_add_track:
* @src: a #GstAudioCdSrc
* @track: address of #GstAudioCdSrcTrack to add
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
*
* CDDA sources use this function from their start vfunc to announce the
* available data and audio tracks to the base source class. The caller
* should allocate @track on the stack, the base source will do a shallow
* copy of the structure (and take ownership of the taglist if there is one).
*
* Returns: FALSE on error, otherwise TRUE.
*/
gboolean
gst_audio_cd_src_add_track (GstAudioCdSrc * src, GstAudioCdSrcTrack * track)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
g_return_val_if_fail (GST_IS_AUDIO_CD_SRC (src), FALSE);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
g_return_val_if_fail (track != NULL, FALSE);
g_return_val_if_fail (track->num > 0, FALSE);
GST_DEBUG_OBJECT (src, "adding track %2u (%2u) [%6u-%6u] [%5s], tags: %"
GST_PTR_FORMAT, src->num_tracks + 1, track->num, track->start,
track->end, (track->is_audio) ? "AUDIO" : "DATA ", track->tags);
if (src->num_tracks > 0) {
guint end_of_previous_track = src->tracks[src->num_tracks - 1].end;
if (track->start <= end_of_previous_track) {
GST_WARNING ("track %2u overlaps with previous tracks", track->num);
return FALSE;
}
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
GST_OBJECT_LOCK (src);
++src->num_tracks;
src->tracks = g_renew (GstAudioCdSrcTrack, src->tracks, src->num_tracks);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
src->tracks[src->num_tracks - 1] = *track;
GST_OBJECT_UNLOCK (src);
return TRUE;
}
static void
gst_audio_cd_src_update_duration (GstAudioCdSrc * src)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
GstBaseSrc *basesrc;
2011-07-27 00:16:08 +00:00
gint64 dur;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
basesrc = GST_BASE_SRC (src);
2011-07-27 00:16:08 +00:00
if (!gst_pad_query_duration (GST_BASE_SRC_PAD (src), GST_FORMAT_TIME, &dur)) {
dur = GST_CLOCK_TIME_NONE;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
2011-07-27 00:16:08 +00:00
basesrc->segment.duration = dur;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
gst_element_post_message (GST_ELEMENT (src),
gst_message_new_duration (GST_OBJECT (src), GST_FORMAT_TIME, -1));
GST_LOG_OBJECT (src, "duration updated to %" GST_TIME_FORMAT,
2011-07-27 00:16:08 +00:00
GST_TIME_ARGS (dur));
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
#define CD_MSF_OFFSET 150
/* the cddb hash function */
static guint
cddb_sum (gint n)
{
guint ret;
ret = 0;
while (n > 0) {
ret += (n % 10);
n /= 10;
}
return ret;
}
static void
gst_audio_cd_src_calculate_musicbrainz_discid (GstAudioCdSrc * src)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
GString *s;
GChecksum *sha;
guchar digest[20];
gchar *ptr;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
gchar tmp[9];
gulong i;
guint leadout_sector;
gsize digest_len;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
s = g_string_new (NULL);
leadout_sector = src->tracks[src->num_tracks - 1].end + 1 + CD_MSF_OFFSET;
/* generate SHA digest */
sha = g_checksum_new (G_CHECKSUM_SHA1);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
g_snprintf (tmp, sizeof (tmp), "%02X", src->tracks[0].num);
g_string_append_printf (s, "%02X", src->tracks[0].num);
g_checksum_update (sha, (guchar *) tmp, 2);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
g_snprintf (tmp, sizeof (tmp), "%02X", src->tracks[src->num_tracks - 1].num);
g_string_append_printf (s, " %02X", src->tracks[src->num_tracks - 1].num);
g_checksum_update (sha, (guchar *) tmp, 2);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
g_snprintf (tmp, sizeof (tmp), "%08X", leadout_sector);
g_string_append_printf (s, " %08X", leadout_sector);
g_checksum_update (sha, (guchar *) tmp, 8);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
for (i = 0; i < 99; i++) {
if (i < src->num_tracks) {
guint frame_offset = src->tracks[i].start + CD_MSF_OFFSET;
g_snprintf (tmp, sizeof (tmp), "%08X", frame_offset);
g_string_append_printf (s, " %08X", frame_offset);
g_checksum_update (sha, (guchar *) tmp, 8);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
} else {
g_checksum_update (sha, (guchar *) "00000000", 8);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
}
digest_len = 20;
g_checksum_get_digest (sha, (guint8 *) & digest, &digest_len);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
/* re-encode to base64 */
ptr = g_base64_encode (digest, digest_len);
g_checksum_free (sha);
i = strlen (ptr);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
g_assert (i < sizeof (src->mb_discid) + 1);
memcpy (src->mb_discid, ptr, i);
src->mb_discid[i] = '\0';
free (ptr);
/* Replace '/', '+' and '=' by '_', '.' and '-' as specified on
* http://musicbrainz.org/doc/DiscIDCalculation
*/
for (ptr = src->mb_discid; *ptr != '\0'; ptr++) {
if (*ptr == '/')
*ptr = '_';
else if (*ptr == '+')
*ptr = '.';
else if (*ptr == '=')
*ptr = '-';
}
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GST_DEBUG_OBJECT (src, "musicbrainz-discid = %s", src->mb_discid);
GST_DEBUG_OBJECT (src, "musicbrainz-discid-full = %s", s->str);
gst_tag_list_add (src->tags, GST_TAG_MERGE_REPLACE,
GST_TAG_CDDA_MUSICBRAINZ_DISCID, src->mb_discid,
GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL, s->str, NULL);
g_string_free (s, TRUE);
}
static void
lba_to_msf (guint sector, guint * p_m, guint * p_s, guint * p_f, guint * p_secs)
{
guint m, s, f;
m = sector / SECTORS_PER_MINUTE;
sector = sector % SECTORS_PER_MINUTE;
s = sector / SECTORS_PER_SECOND;
f = sector % SECTORS_PER_SECOND;
if (p_m)
*p_m = m;
if (p_s)
*p_s = s;
if (p_f)
*p_f = f;
if (p_secs)
*p_secs = s + (m * 60);
}
static void
gst_audio_cd_src_calculate_cddb_id (GstAudioCdSrc * src)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
GString *s;
guint first_sector = 0, last_sector = 0;
guint start_secs, end_secs, secs, len_secs;
guint total_secs, num_audio_tracks;
guint id, t, i;
id = 0;
total_secs = 0;
num_audio_tracks = 0;
/* FIXME: do we use offsets and duration of ALL tracks (data + audio)
* for the CDDB ID calculation, or only audio tracks? */
for (i = 0; i < src->num_tracks; ++i) {
if (1) { /* src->tracks[i].is_audio) { */
if (num_audio_tracks == 0) {
first_sector = src->tracks[i].start + CD_MSF_OFFSET;
}
last_sector = src->tracks[i].end + CD_MSF_OFFSET + 1;
++num_audio_tracks;
lba_to_msf (src->tracks[i].start + CD_MSF_OFFSET, NULL, NULL, NULL,
&secs);
len_secs = (src->tracks[i].end - src->tracks[i].start + 1) / 75;
GST_DEBUG_OBJECT (src, "track %02u: lsn %6u (%02u:%02u), "
"length: %u seconds (%02u:%02u)",
num_audio_tracks, src->tracks[i].start + CD_MSF_OFFSET,
secs / 60, secs % 60, len_secs, len_secs / 60, len_secs % 60);
id += cddb_sum (secs);
total_secs += len_secs;
}
}
/* first_sector = src->tracks[0].start + CD_MSF_OFFSET; */
lba_to_msf (first_sector, NULL, NULL, NULL, &start_secs);
/* last_sector = src->tracks[src->num_tracks-1].end + CD_MSF_OFFSET; */
lba_to_msf (last_sector, NULL, NULL, NULL, &end_secs);
GST_DEBUG_OBJECT (src, "first_sector = %u = %u secs (%02u:%02u)",
first_sector, start_secs, start_secs / 60, start_secs % 60);
GST_DEBUG_OBJECT (src, "last_sector = %u = %u secs (%02u:%02u)",
last_sector, end_secs, end_secs / 60, end_secs % 60);
t = end_secs - start_secs;
GST_DEBUG_OBJECT (src, "total length = %u secs (%02u:%02u), added title "
"lengths = %u seconds (%02u:%02u)", t, t / 60, t % 60, total_secs,
total_secs / 60, total_secs % 60);
src->discid = ((id % 0xff) << 24 | t << 8 | num_audio_tracks);
s = g_string_new (NULL);
g_string_append_printf (s, "%08x", src->discid);
gst_tag_list_add (src->tags, GST_TAG_MERGE_REPLACE,
GST_TAG_CDDA_CDDB_DISCID, s->str, NULL);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
g_string_append_printf (s, " %u", src->num_tracks);
for (i = 0; i < src->num_tracks; ++i) {
g_string_append_printf (s, " %u", src->tracks[i].start + CD_MSF_OFFSET);
}
g_string_append_printf (s, " %u", t);
gst_tag_list_add (src->tags, GST_TAG_MERGE_REPLACE,
GST_TAG_CDDA_CDDB_DISCID_FULL, s->str, NULL);
GST_DEBUG_OBJECT (src, "cddb discid = %s", s->str);
g_string_free (s, TRUE);
}
static void
gst_audio_cd_src_add_tags (GstAudioCdSrc * src)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
gint i;
/* fill in details for each track */
for (i = 0; i < src->num_tracks; ++i) {
gint64 duration;
guint num_sectors;
if (src->tracks[i].tags == NULL)
src->tracks[i].tags = gst_tag_list_new_empty ();
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
num_sectors = src->tracks[i].end - src->tracks[i].start + 1;
gst_audio_cd_src_convert (src, sector_format, num_sectors,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GST_FORMAT_TIME, &duration);
gst_tag_list_add (src->tracks[i].tags,
GST_TAG_MERGE_REPLACE,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GST_TAG_TRACK_NUMBER, i + 1,
GST_TAG_TRACK_COUNT, src->num_tracks, GST_TAG_DURATION, duration, NULL);
}
/* now fill in per-album tags and include each track's tags
* in the album tags, so that interested parties can retrieve
* the relevant details for each track in one go */
/* /////////////////////////////// FIXME should we rather insert num_tracks
* tags by the name of 'track-tags' and have the caller use
* gst_tag_list_get_value_index() rather than use tag names incl.
* the track number ?? *////////////////////////////////////////
gst_tag_list_add (src->tags, GST_TAG_MERGE_REPLACE,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GST_TAG_TRACK_COUNT, src->num_tracks, NULL);
#if 0
for (i = 0; i < src->num_tracks; ++i) {
gst_tag_list_add (src->tags, GST_TAG_MERGE_APPEND,
GST_TAG_CDDA_TRACK_TAGS, src->tracks[i].tags, NULL);
}
#endif
GST_DEBUG ("src->tags = %" GST_PTR_FORMAT, src->tags);
}
static void
gst_audio_cd_src_add_index_associations (GstAudioCdSrc * src)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
gint i;
for (i = 0; i < src->num_tracks; i++) {
gint64 sector;
sector = src->tracks[i].start;
gst_index_add_association (src->index, src->index_id, GST_ASSOCIATION_FLAG_KEY_UNIT, track_format, i, /* here we count from 0 */
sector_format, sector,
GST_FORMAT_TIME,
(gint64) (((CD_FRAMESIZE_RAW >> 2) * sector * GST_SECOND) / 44100),
GST_FORMAT_BYTES, (gint64) (sector << 2), GST_FORMAT_DEFAULT,
(gint64) ((CD_FRAMESIZE_RAW >> 2) * sector), NULL);
}
}
static void
gst_audio_cd_src_set_index (GstElement * element, GstIndex * index)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
GstAudioCdSrc *src = GST_AUDIO_CD_SRC (element);
2009-08-28 17:06:57 +00:00
GstIndex *old;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
2009-08-28 17:06:57 +00:00
GST_OBJECT_LOCK (element);
old = src->index;
if (old == index) {
GST_OBJECT_UNLOCK (element);
return;
}
if (index)
gst_object_ref (index);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
src->index = index;
2009-08-28 17:06:57 +00:00
GST_OBJECT_UNLOCK (element);
if (old)
gst_object_unref (old);
if (index) {
gst_index_get_writer_id (index, GST_OBJECT (src), &src->index_id);
gst_index_add_format (index, src->index_id, track_format);
gst_index_add_format (index, src->index_id, sector_format);
}
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
static GstIndex *
gst_audio_cd_src_get_index (GstElement * element)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
GstAudioCdSrc *src = GST_AUDIO_CD_SRC (element);
2009-08-28 17:06:57 +00:00
GstIndex *index;
GST_OBJECT_LOCK (element);
if ((index = src->index))
gst_object_ref (index);
GST_OBJECT_UNLOCK (element);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
2009-08-28 17:06:57 +00:00
return index;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
static gint
gst_audio_cd_src_track_sort_func (gconstpointer a, gconstpointer b,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
gpointer foo)
{
GstAudioCdSrcTrack *track_a = ((GstAudioCdSrcTrack *) a);
GstAudioCdSrcTrack *track_b = ((GstAudioCdSrcTrack *) b);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
/* sort data tracks to the end, and audio tracks by track number */
if (track_a->is_audio == track_b->is_audio)
return (gint) track_a->num - (gint) track_b->num;
if (track_a->is_audio) {
return -1;
} else {
return 1;
}
}
static gboolean
gst_audio_cd_src_start (GstBaseSrc * basesrc)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
GstAudioCdSrcClass *klass = GST_AUDIO_CD_SRC_GET_CLASS (basesrc);
GstAudioCdSrc *src = GST_AUDIO_CD_SRC (basesrc);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
gboolean ret;
gchar *device = NULL;
src->discid = 0;
src->mb_discid[0] = '\0';
g_assert (klass->open != NULL);
if (src->device != NULL) {
device = g_strdup (src->device);
} else if (klass->get_default_device != NULL) {
device = klass->get_default_device (src);
}
if (device == NULL)
device = g_strdup (DEFAULT_DEVICE);
GST_LOG_OBJECT (basesrc, "opening device %s", device);
src->tags = gst_tag_list_new_empty ();
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
ret = klass->open (src, device);
g_free (device);
device = NULL;
2011-12-06 12:59:11 +00:00
if (!ret)
goto open_failed;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
2011-12-06 12:59:11 +00:00
if (src->num_tracks == 0 || src->tracks == NULL)
goto no_tracks;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
/* need to calculate disc IDs before we ditch the data tracks */
gst_audio_cd_src_calculate_cddb_id (src);
gst_audio_cd_src_calculate_musicbrainz_discid (src);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
#if 0
/* adjust sector offsets if necessary */
if (src->toc_bias) {
src->toc_offset -= src->tracks[0].start;
}
for (i = 0; i < src->num_tracks; ++i) {
src->tracks[i].start += src->toc_offset;
src->tracks[i].end += src->toc_offset;
}
#endif
/* now that we calculated the various disc IDs,
* sort the data tracks to end and ignore them */
src->num_all_tracks = src->num_tracks;
g_qsort_with_data (src->tracks, src->num_tracks,
sizeof (GstAudioCdSrcTrack), gst_audio_cd_src_track_sort_func, NULL);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
while (src->num_tracks > 0 && !src->tracks[src->num_tracks - 1].is_audio)
--src->num_tracks;
2011-12-06 12:59:11 +00:00
if (src->num_tracks == 0)
goto no_tracks;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
gst_audio_cd_src_add_tags (src);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
if (src->index && GST_INDEX_IS_WRITABLE (src->index))
gst_audio_cd_src_add_index_associations (src);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
src->cur_track = 0;
src->prev_track = -1;
if (src->uri_track > 0 && src->uri_track <= src->num_tracks) {
GST_LOG_OBJECT (src, "seek to track %d", src->uri_track);
src->cur_track = src->uri_track - 1;
src->uri_track = -1;
src->mode = GST_AUDIO_CD_SRC_MODE_NORMAL;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
src->cur_sector = src->tracks[src->cur_track].start;
GST_LOG_OBJECT (src, "starting at sector %d", src->cur_sector);
gst_audio_cd_src_update_duration (src);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
return TRUE;
2011-12-06 12:59:11 +00:00
/* ERRORS */
open_failed:
{
GST_DEBUG_OBJECT (basesrc, "failed to open device");
/* subclass (should have) posted an error message with the details */
gst_audio_cd_src_stop (basesrc);
return FALSE;
}
no_tracks:
{
GST_DEBUG_OBJECT (src, "no audio tracks");
GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ,
(_("This CD has no audio tracks")), (NULL));
gst_audio_cd_src_stop (basesrc);
return FALSE;
}
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
static void
gst_audio_cd_src_clear_tracks (GstAudioCdSrc * src)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
if (src->tracks != NULL) {
gint i;
for (i = 0; i < src->num_all_tracks; ++i) {
if (src->tracks[i].tags)
gst_tag_list_free (src->tracks[i].tags);
}
g_free (src->tracks);
src->tracks = NULL;
}
src->num_tracks = 0;
src->num_all_tracks = 0;
}
static gboolean
gst_audio_cd_src_stop (GstBaseSrc * basesrc)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
GstAudioCdSrcClass *klass = GST_AUDIO_CD_SRC_GET_CLASS (basesrc);
GstAudioCdSrc *src = GST_AUDIO_CD_SRC (basesrc);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
g_assert (klass->close != NULL);
klass->close (src);
gst_audio_cd_src_clear_tracks (src);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
if (src->tags) {
gst_tag_list_free (src->tags);
src->tags = NULL;
}
src->prev_track = -1;
src->cur_track = -1;
return TRUE;
}
ext/gnomevfs/: Fix URI interface implementation return type. Original commit message from CVS: 2006-10-10 Zaheer Abbas Merali <zaheerabbas at merali dot org> Patch by: Josep Torre Valles <josep@fluendo.com> * ext/gnomevfs/gstgnomevfssink.c: * ext/gnomevfs/gstgnomevfssrc.c: Fix URI interface implementation return type. * ext/pango/gsttextoverlay.c: (gst_text_overlay_set_property): Fix what looks like a copy/paste issue when assigning values. * gst-libs/gst/audio/gstaudiofiltertemplate.c: (gst_audio_filter_template_get_type): Cast to prevent Forte warnings. * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_create): Fix URI interface implementation return type. gst_pad_query_position requires a signed integer pointer as 3rd parameter, GstClockTime is unsigned. * gst/audioconvert/audioconvert.c: Fix integer overflow when treated as signed. * gst/audioresample/resample.c: (resample_add_input_data): Cast to prevent warnings on Forte. * gst/ffmpegcolorspace/imgconvert.c: (build_rgb_palette): Fix integer overflow when treated as signed. * gst/ffmpegcolorspace/imgconvert_template.h: Fix integer overflow when treated as signed. RGBA_OUT shifts bits. * gst/playback/gstdecodebin.c: (queue_filled_cb), (cleanup_decodebin): Who initialises a guint to -1! Cast function pointers to prevent warnings on Forte. * gst/playback/gstplaybasebin.c: (queue_deadlock_check), (queue_threshold_reached): Cast function pointers correctly to prevent warnings on Forte. * gst/playback/gststreaminfo.c: (gst_stream_info_dispose): Cast function pointers correctly to prevent warnings on Forte. * gst/subparse/gstssaparse.c: (gst_ssa_parse_setcaps): Obvious change to unsigned, 0xEF > max signed char. * gst/tcp/gstmultifdsink.c: (get_buffers_max), (count_burst_unit): GstClockTime is unsigned, initialise correctly. * gst/tcp/gsttcp.c: (gst_tcp_socket_write): Cast so pointer arithemetic doesn't cause warnings on Forte. * gst/videorate/gstvideorate.c: Use correct return value. * tests/examples/seek/scrubby.c: GstClockTime is unsigned, initialise correctly.
2006-10-10 12:49:03 +00:00
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
static GstFlowReturn
gst_audio_cd_src_create (GstPushSrc * pushsrc, GstBuffer ** buffer)
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
{
GstAudioCdSrcClass *klass = GST_AUDIO_CD_SRC_GET_CLASS (pushsrc);
GstAudioCdSrc *src = GST_AUDIO_CD_SRC (pushsrc);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GstBuffer *buf;
gboolean eos;
ext/gnomevfs/: Fix URI interface implementation return type. Original commit message from CVS: 2006-10-10 Zaheer Abbas Merali <zaheerabbas at merali dot org> Patch by: Josep Torre Valles <josep@fluendo.com> * ext/gnomevfs/gstgnomevfssink.c: * ext/gnomevfs/gstgnomevfssrc.c: Fix URI interface implementation return type. * ext/pango/gsttextoverlay.c: (gst_text_overlay_set_property): Fix what looks like a copy/paste issue when assigning values. * gst-libs/gst/audio/gstaudiofiltertemplate.c: (gst_audio_filter_template_get_type): Cast to prevent Forte warnings. * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_create): Fix URI interface implementation return type. gst_pad_query_position requires a signed integer pointer as 3rd parameter, GstClockTime is unsigned. * gst/audioconvert/audioconvert.c: Fix integer overflow when treated as signed. * gst/audioresample/resample.c: (resample_add_input_data): Cast to prevent warnings on Forte. * gst/ffmpegcolorspace/imgconvert.c: (build_rgb_palette): Fix integer overflow when treated as signed. * gst/ffmpegcolorspace/imgconvert_template.h: Fix integer overflow when treated as signed. RGBA_OUT shifts bits. * gst/playback/gstdecodebin.c: (queue_filled_cb), (cleanup_decodebin): Who initialises a guint to -1! Cast function pointers to prevent warnings on Forte. * gst/playback/gstplaybasebin.c: (queue_deadlock_check), (queue_threshold_reached): Cast function pointers correctly to prevent warnings on Forte. * gst/playback/gststreaminfo.c: (gst_stream_info_dispose): Cast function pointers correctly to prevent warnings on Forte. * gst/subparse/gstssaparse.c: (gst_ssa_parse_setcaps): Obvious change to unsigned, 0xEF > max signed char. * gst/tcp/gstmultifdsink.c: (get_buffers_max), (count_burst_unit): GstClockTime is unsigned, initialise correctly. * gst/tcp/gsttcp.c: (gst_tcp_socket_write): Cast so pointer arithemetic doesn't cause warnings on Forte. * gst/videorate/gstvideorate.c: Use correct return value. * tests/examples/seek/scrubby.c: GstClockTime is unsigned, initialise correctly.
2006-10-10 12:49:03 +00:00
GstClockTime position = GST_CLOCK_TIME_NONE;
GstClockTime duration = GST_CLOCK_TIME_NONE;
gint64 qry_position;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
g_assert (klass->read_sector != NULL);
switch (src->mode) {
case GST_AUDIO_CD_SRC_MODE_NORMAL:
eos = (src->cur_sector > src->tracks[src->cur_track].end);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
break;
case GST_AUDIO_CD_SRC_MODE_CONTINUOUS:
eos = (src->cur_sector > src->tracks[src->num_tracks - 1].end);
src->cur_track = gst_audio_cd_src_get_track_from_sector (src,
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
src->cur_sector);
break;
default:
g_return_val_if_reached (GST_FLOW_ERROR);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
if (eos) {
src->prev_track = -1;
GST_DEBUG_OBJECT (src, "EOS at sector %d, cur_track=%d, mode=%d",
src->cur_sector, src->cur_track, src->mode);
/* base class will send EOS for us */
return GST_FLOW_EOS;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
if (src->prev_track != src->cur_track) {
GstTagList *tags;
tags = gst_tag_list_merge (src->tags, src->tracks[src->cur_track].tags,
GST_TAG_MERGE_REPLACE);
GST_LOG_OBJECT (src, "announcing tags: %" GST_PTR_FORMAT, tags);
2011-11-02 11:08:22 +00:00
gst_pad_push_event (GST_BASE_SRC_PAD (src), gst_event_new_tag (tags));
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
src->prev_track = src->cur_track;
gst_audio_cd_src_update_duration (src);
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
g_object_notify (G_OBJECT (src), "track");
}
GST_LOG_OBJECT (src, "asking for sector %u", src->cur_sector);
buf = klass->read_sector (src, src->cur_sector);
if (buf == NULL) {
GST_WARNING_OBJECT (src, "failed to read sector %u", src->cur_sector);
return GST_FLOW_ERROR;
}
2011-07-27 00:16:08 +00:00
if (gst_pad_query_position (GST_BASE_SRC_PAD (src), GST_FORMAT_TIME,
&qry_position)) {
gint64 next_ts = 0;
position = (GstClockTime) qry_position;
++src->cur_sector;
2011-07-27 00:16:08 +00:00
if (gst_pad_query_position (GST_BASE_SRC_PAD (src), GST_FORMAT_TIME,
&next_ts)) {
ext/gnomevfs/: Fix URI interface implementation return type. Original commit message from CVS: 2006-10-10 Zaheer Abbas Merali <zaheerabbas at merali dot org> Patch by: Josep Torre Valles <josep@fluendo.com> * ext/gnomevfs/gstgnomevfssink.c: * ext/gnomevfs/gstgnomevfssrc.c: Fix URI interface implementation return type. * ext/pango/gsttextoverlay.c: (gst_text_overlay_set_property): Fix what looks like a copy/paste issue when assigning values. * gst-libs/gst/audio/gstaudiofiltertemplate.c: (gst_audio_filter_template_get_type): Cast to prevent Forte warnings. * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_create): Fix URI interface implementation return type. gst_pad_query_position requires a signed integer pointer as 3rd parameter, GstClockTime is unsigned. * gst/audioconvert/audioconvert.c: Fix integer overflow when treated as signed. * gst/audioresample/resample.c: (resample_add_input_data): Cast to prevent warnings on Forte. * gst/ffmpegcolorspace/imgconvert.c: (build_rgb_palette): Fix integer overflow when treated as signed. * gst/ffmpegcolorspace/imgconvert_template.h: Fix integer overflow when treated as signed. RGBA_OUT shifts bits. * gst/playback/gstdecodebin.c: (queue_filled_cb), (cleanup_decodebin): Who initialises a guint to -1! Cast function pointers to prevent warnings on Forte. * gst/playback/gstplaybasebin.c: (queue_deadlock_check), (queue_threshold_reached): Cast function pointers correctly to prevent warnings on Forte. * gst/playback/gststreaminfo.c: (gst_stream_info_dispose): Cast function pointers correctly to prevent warnings on Forte. * gst/subparse/gstssaparse.c: (gst_ssa_parse_setcaps): Obvious change to unsigned, 0xEF > max signed char. * gst/tcp/gstmultifdsink.c: (get_buffers_max), (count_burst_unit): GstClockTime is unsigned, initialise correctly. * gst/tcp/gsttcp.c: (gst_tcp_socket_write): Cast so pointer arithemetic doesn't cause warnings on Forte. * gst/videorate/gstvideorate.c: Use correct return value. * tests/examples/seek/scrubby.c: GstClockTime is unsigned, initialise correctly.
2006-10-10 12:49:03 +00:00
duration = (GstClockTime) (next_ts - qry_position);
}
--src->cur_sector;
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
}
/* fallback duration: 4 bytes per sample, 44100 samples per second */
if (duration == GST_CLOCK_TIME_NONE) {
2011-03-27 11:55:15 +00:00
duration = gst_util_uint64_scale_int (gst_buffer_get_size (buf) >> 2,
GST_SECOND, 44100);
}
Add new libgstcdda with GstCddaBaseSrc class. Original commit message from CVS: * configure.ac: * gst-libs/gst/Makefile.am: * gst-libs/gst/cdda/Makefile.am: * gst-libs/gst/cdda/base64.c: * gst-libs/gst/cdda/base64.h: * gst-libs/gst/cdda/gstcddabasesrc.c: (gst_cdda_base_src_mode_get_type), (gst_cdda_base_src_base_init), (gst_cdda_base_src_class_init), (gst_cdda_base_src_init), (gst_cdda_base_src_finalize), (gst_cdda_base_src_set_property), (gst_cdda_base_src_get_property), (gst_cdda_base_src_get_track_from_sector), (gst_cdda_base_src_get_query_types), (gst_cdda_base_src_convert), (gst_cdda_base_src_query), (gst_cdda_base_src_is_seekable), (gst_cdda_base_src_do_seek), (gst_cdda_base_src_handle_track_seek), (gst_cdda_base_src_handle_event), (gst_cdda_base_src_uri_get_type), (gst_cdda_base_src_uri_get_protocols), (gst_cdda_base_src_uri_get_uri), (gst_cdda_base_src_uri_set_uri), (gst_cdda_base_src_uri_handler_init), (gst_cdda_base_src_setup_interfaces), (gst_cdda_base_src_add_track), (gst_cdda_base_src_update_duration), (cddb_sum), (gst_cddabasesrc_calculate_musicbrainz_discid), (lba_to_msf), (gst_cdda_base_src_calculate_cddb_id), (gst_cdda_base_src_add_tags), (gst_cdda_base_src_add_index_associations), (gst_cdda_base_src_set_index), (gst_cdda_base_src_get_index), (gst_cdda_base_src_track_sort_func), (gst_cdda_base_src_start), (gst_cdda_base_src_clear_tracks), (gst_cdda_base_src_stop), (gst_cdda_base_src_create): * gst-libs/gst/cdda/gstcddabasesrc.h: * gst-libs/gst/cdda/sha1.c: * gst-libs/gst/cdda/sha1.h: Add new libgstcdda with GstCddaBaseSrc class.
2005-12-28 18:06:50 +00:00
GST_BUFFER_TIMESTAMP (buf) = position;
GST_BUFFER_DURATION (buf) = duration;
GST_LOG_OBJECT (src, "pushing sector %d with timestamp %" GST_TIME_FORMAT,
src->cur_sector, GST_TIME_ARGS (position));
++src->cur_sector;
*buffer = buf;
return GST_FLOW_OK;
}