From 899caa91f195ad422731761d69035b9de23ebb00 Mon Sep 17 00:00:00 2001 From: diego Date: Mon, 21 Jun 2010 10:40:30 +0000 Subject: stream_cdda.c: Reorder functions to avoid forward declarations. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31511 b3059339-0415-0410-9bf9-f77b7e298cf2 --- stream/stream_cdda.c | 216 +++++++++++++++++++++++++-------------------------- 1 file changed, 106 insertions(+), 110 deletions(-) (limited to 'stream') diff --git a/stream/stream_cdda.c b/stream/stream_cdda.c index 0dca95ddda..b768d25682 100644 --- a/stream/stream_cdda.c +++ b/stream/stream_cdda.c @@ -125,9 +125,112 @@ const m_option_t cdda_opts[] = { {NULL, NULL, 0, 0, 0, 0, NULL} }; -static int seek(stream_t* s,off_t pos); -static int fill_buffer(stream_t* s, char* buffer, int max_len); -static void close_cdda(stream_t* s); +#ifndef CONFIG_LIBCDIO +static void cdparanoia_callback(long inpos, int function) { +#else +static void cdparanoia_callback(long int inpos, paranoia_cb_mode_t function) { +#endif +} + +static int fill_buffer(stream_t* s, char* buffer, int max_len) { + cdda_priv* p = (cdda_priv*)s->priv; + cd_track_t *cd_track; + int16_t * buf; + int i; + + if((p->sector < p->start_sector) || (p->sector > p->end_sector)) { + s->eof = 1; + return 0; + } + + buf = paranoia_read(p->cdp,cdparanoia_callback); + if (!buf) + return 0; + +#if HAVE_BIGENDIAN + for(i=0;isector++; + memcpy(buffer,buf,CD_FRAMESIZE_RAW); + + for(i=0;icd->tracks;i++){ + if(p->cd->disc_toc[i].dwStartSector==p->sector-1) { + cd_track = cd_info_get_track(p->cd_info, i+1); +//printf("Track %d, sector=%d\n", i, p->sector-1); + if( cd_track!=NULL ) { + mp_msg(MSGT_SEEK, MSGL_INFO, "\n%s\n", cd_track->name); + mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_CDDA_TRACK=%d\n", cd_track->track_nb); + } + break; + } + } + + + return CD_FRAMESIZE_RAW; +} + +static int seek(stream_t* s,off_t newpos) { + cdda_priv* p = (cdda_priv*)s->priv; + cd_track_t *cd_track; + int sec; + int current_track=0, seeked_track=0; + int seek_to_track = 0; + int i; + + s->pos = newpos; + sec = s->pos/CD_FRAMESIZE_RAW; + if (s->pos < 0 || sec > p->end_sector) { + s->eof = 1; + return 0; + } + +//printf("pos: %d, sec: %d ## %d\n", (int)s->pos, (int)sec, CD_FRAMESIZE_RAW); +//printf("sector: %d new: %d\n", p->sector, sec ); + + for(i=0;icd->tracks;i++){ +// printf("trk #%d: %d .. %d\n",i,p->cd->disc_toc[i].dwStartSector,p->cd->disc_toc[i+1].dwStartSector); + if( p->sector>=p->cd->disc_toc[i].dwStartSector && p->sectorcd->disc_toc[i+1].dwStartSector ) { + current_track = i; + } + if( sec>=p->cd->disc_toc[i].dwStartSector && seccd->disc_toc[i+1].dwStartSector ) { + seeked_track = i; + seek_to_track = sec == p->cd->disc_toc[i].dwStartSector; + } + } +//printf("current: %d, seeked: %d\n", current_track, seeked_track); + if (current_track != seeked_track && !seek_to_track) { +//printf("Track %d, sector=%d\n", seeked_track, sec); + cd_track = cd_info_get_track(p->cd_info, seeked_track+1); + if( cd_track!=NULL ) { + mp_msg(MSGT_SEEK, MSGL_INFO, "\n%s\n", cd_track->name); + mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_CDDA_TRACK=%d\n", cd_track->track_nb); + } + + } +#if 0 + if(sec < p->start_sector) + sec = p->start_sector; + else if(sec > p->end_sector) + sec = p->end_sector; +#endif + + p->sector = sec; +// s->pos = sec*CD_FRAMESIZE_RAW; + +//printf("seek: %d, sec: %d\n", (int)s->pos, sec); + paranoia_seek(p->cdp,sec,SEEK_SET); + return 1; +} + +static void close_cdda(stream_t* s) { + cdda_priv* p = (cdda_priv*)s->priv; + paranoia_free(p->cdp); + cdda_close(p->cd); + cd_info_free(p->cd_info); + free(p); +} static int get_track_by_sector(cdda_priv *p, unsigned int sector) { int i; @@ -357,113 +460,6 @@ static int open_cdda(stream_t *st,int m, void* opts, int* file_format) { return STREAM_OK; } -#ifndef CONFIG_LIBCDIO -static void cdparanoia_callback(long inpos, int function) { -#else -static void cdparanoia_callback(long int inpos, paranoia_cb_mode_t function) { -#endif -} - -static int fill_buffer(stream_t* s, char* buffer, int max_len) { - cdda_priv* p = (cdda_priv*)s->priv; - cd_track_t *cd_track; - int16_t * buf; - int i; - - if((p->sector < p->start_sector) || (p->sector > p->end_sector)) { - s->eof = 1; - return 0; - } - - buf = paranoia_read(p->cdp,cdparanoia_callback); - if (!buf) - return 0; - -#if HAVE_BIGENDIAN - for(i=0;isector++; - memcpy(buffer,buf,CD_FRAMESIZE_RAW); - - for(i=0;icd->tracks;i++){ - if(p->cd->disc_toc[i].dwStartSector==p->sector-1) { - cd_track = cd_info_get_track(p->cd_info, i+1); -//printf("Track %d, sector=%d\n", i, p->sector-1); - if( cd_track!=NULL ) { - mp_msg(MSGT_SEEK, MSGL_INFO, "\n%s\n", cd_track->name); - mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_CDDA_TRACK=%d\n", cd_track->track_nb); - } - break; - } - } - - - return CD_FRAMESIZE_RAW; -} - -static int seek(stream_t* s,off_t newpos) { - cdda_priv* p = (cdda_priv*)s->priv; - cd_track_t *cd_track; - int sec; - int current_track=0, seeked_track=0; - int seek_to_track = 0; - int i; - - s->pos = newpos; - sec = s->pos/CD_FRAMESIZE_RAW; - if (s->pos < 0 || sec > p->end_sector) { - s->eof = 1; - return 0; - } - -//printf("pos: %d, sec: %d ## %d\n", (int)s->pos, (int)sec, CD_FRAMESIZE_RAW); -//printf("sector: %d new: %d\n", p->sector, sec ); - - for(i=0;icd->tracks;i++){ -// printf("trk #%d: %d .. %d\n",i,p->cd->disc_toc[i].dwStartSector,p->cd->disc_toc[i+1].dwStartSector); - if( p->sector>=p->cd->disc_toc[i].dwStartSector && p->sectorcd->disc_toc[i+1].dwStartSector ) { - current_track = i; - } - if( sec>=p->cd->disc_toc[i].dwStartSector && seccd->disc_toc[i+1].dwStartSector ) { - seeked_track = i; - seek_to_track = sec == p->cd->disc_toc[i].dwStartSector; - } - } -//printf("current: %d, seeked: %d\n", current_track, seeked_track); - if (current_track != seeked_track && !seek_to_track) { -//printf("Track %d, sector=%d\n", seeked_track, sec); - cd_track = cd_info_get_track(p->cd_info, seeked_track+1); - if( cd_track!=NULL ) { - mp_msg(MSGT_SEEK, MSGL_INFO, "\n%s\n", cd_track->name); - mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_CDDA_TRACK=%d\n", cd_track->track_nb); - } - - } -#if 0 - if(sec < p->start_sector) - sec = p->start_sector; - else if(sec > p->end_sector) - sec = p->end_sector; -#endif - - p->sector = sec; -// s->pos = sec*CD_FRAMESIZE_RAW; - -//printf("seek: %d, sec: %d\n", (int)s->pos, sec); - paranoia_seek(p->cdp,sec,SEEK_SET); - return 1; -} - -static void close_cdda(stream_t* s) { - cdda_priv* p = (cdda_priv*)s->priv; - paranoia_free(p->cdp); - cdda_close(p->cd); - cd_info_free(p->cd_info); - free(p); -} - const stream_info_t stream_info_cdda = { "CDDA", "cdda", -- cgit v1.2.3