Opened 16 years ago

Last modified 13 years ago

#1096 new defect

thick cuesheet support

Reported by: zasada_shaman@… Owned by: reimar
Priority: normal Component: ad
Version: 1.0rc2 Severity: normal
Keywords: Cc:
Blocked By: Blocking:
Reproduced by developer: no Analyzed by developer: no

Description

Cue support is not working. At all.

Mplayer's man page tells that mplayer supports cuesheet via cue://cuefile "protocol"
So, I have some music releases in "flac image"+"cuesheet" where cuesheet also plays a role of playlist - tracktitles, artist, etc.
Here is an example of my cue:

REM GENRE Alternative
REM DATE 2001
REM DISCID E70CF90F
REM COMMENT "ExactAudioCopy v0.95b4"
PERFORMER "Clawfinger"
TITLE "A Whole Lot Of Nothing"
FILE "Clawfinger - A Whole Lot Of Nothing.wav" WAVE

TRACK 01 AUDIO

TITLE "Two Steps Away"
PERFORMER "Clawfinger"
INDEX 01 00:00:00

TRACK 02 AUDIO

TITLE "Out To Get Me"
PERFORMER "Clawfinger"
INDEX 00 03:40:54
INDEX 01 03:42:04

TRACK 03 AUDIO

TITLE "Nothing Going On"
PERFORMER "Clawfinger"
INDEX 00 07:25:11
INDEX 01 07:26:36

TRACK 04 AUDIO

TITLE "Are You Man Enough"
PERFORMER "Clawfinger"
INDEX 01 10:47:09

TRACK 05 AUDIO

TITLE "Confrontation"
PERFORMER "Clawfinger"
INDEX 01 14:22:09

and so on.

So, I tryed chdir to ./where_those_files_stored and run
$ mplayer cue://Clawfinger\ -\ A\ Whole\ Lot\ Of\ Nothing.wav.cue

And sure I get this:

MPlayer dev-SVN-r26753-4.1.2 (C) 2000-2008 MPlayer Team
CPU: Intel(R) Core(TM)2 Duo CPU E8200 @ 2.66GHz (Family: 6, Model: 23, Stepping: 6)
CPUflags: MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Скомпилировано для x86 CPU со следующими расширениями: MMX MMX2 SSE SSE2

Воспроизведение cue://Clawfinger - A Whole Lot Of Nothing.wav.cue.
[bincue] cue_find_bin(REM GENRE Alternative
)
[bincue] проверенное имя бинарного файла:
[bincue] Использую бинарный файл ./.
[bincue] Ошибка чтения из Clawfinger - A Whole Lot Of Nothing.wav.cue
No stream found to handle url cue://Clawfinger - A Whole Lot Of Nothing.wav.cue

( my translation:
[bincue] checked binary filename:
[bincue] use binary file ./.
[bincue] read error from Clawfinger - A Whole Lot Of Nothing.wav.cue
No stream found to handle url cue://Clawfinger - A Whole Lot Of Nothing.wav.cue
)

This error was not very difficult for me to resolv.
I added some code into stream/stream_cue.c:

350 /* read the first line and hand it to find_bin, which will
351 test more than one possible name of the file */
352 + sLine[0]='\0';
353 + /*
354 + * Temporarily way to make avialable to use REAL cue-sheet files
355 + */
356 + while (strncmp(sLine, "FILE \"",6)!=0)
357 + {
358 if(! fgets( sLine, 256, fd_cue ) )
359 {
360 mp_msg(MSGT_OPEN,MSGL_ERR,
361 MSGTR_MPDEMUX_CUEREAD_ErrReadingFromCueFile, in_cue_filename);
362 fclose (fd_cue);
363 return -1;
364 + }
365 + mp_msg (MSGT_OPEN,MSGL_INFO, "[bincue] looking for \"FILE \" in (%s)\n", sLine);
366 }
367
368 if (cue_find_bin(sLine)) {
369 fclose (fd_cue);
370 return -1;
371 }

It was added just to check if I really right.
It helped, but not fully:

[bincue] looking for "FILE " in (REM GENRE Alternative)
[bincue] looking for "FILE " in (REM DATE 2001)
[bincue] looking for "FILE " in (REM DISCID E70CF90F)
[bincue] looking for "FILE " in (REM COMMENT "ExactAudioCopy v0.95b4")
[bincue] looking for "FILE " in (PERFORMER "Clawfinger")
[bincue] looking for "FILE " in (TITLE "A Whole Lot Of Nothing")
[bincue] looking for "FILE " in (FILE "Clawfinger - A Whole Lot Of Nothing.ape" WAVE)
[bincue] cue_find_bin(FILE "Clawfinger - A Whole Lot Of Nothing.ape" WAVE)
[bincue] Using bin file Clawfinger - A Whole Lot Of Nothing.ape.
[bincue] Unexpected cuefile line: TITLE "Two Steps Away"
[bincue] Unexpected cuefile line: PERFORMER "Clawfinger"
[bincue] Unexpected cuefile line: TITLE "Out To Get Me"
[bincue] Unexpected cuefile line: PERFORMER "Clawfinger"
.........
track 01: format=0 00:00:00
track 02: format=0 03:40:54
track 03: format=0 07:25:11
track 04: format=0 10:47:09
track 05: format=0 14:22:09
track 06: format=0 17:56:00
track 07: format=0 22:13:13
track 08: format=0 25:45:29
track 09: format=0 29:46:60
track 10: format=0 33:09:68
track 11: format=0 36:19:30
track 12: format=0 39:58:41
track 13: format=0 44:01:23
track 14: format=0 48:15:35
track 15: format=0 51:35:03
CUE stream_open, filename=image.cue, track=1, available tracks: 0 -> 38471496

Exiting... (End of file)

Why? So I tryed to encrease msglevel. At this time I alredy guess that cue was written for VCD-images. But it must work for audio to! I conthider it wouldn't work even for vcd. So:

CUE stream_open, filename=image.cue, track=1, available tracks: 0 -> 38471496
STREAM: [cue] cue://image.cue
STREAM: Description: CUE track
STREAM: Author: Albeu
STREAM: Comment: based on the code from ???
s->pos=0 newpos=0 new_bufpos=0 buflen=0
stream_seek: WARNING! Can't seek to 0x0 !
DEMUXER: freeing demuxer at 0x8a3e5f8
s->pos=0 newpos=0 new_bufpos=0 buflen=0
stream_seek: WARNING! Can't seek to 0x0 !
DEMUXER: freeing demuxer at 0x8a3e5f8
s->pos=0 newpos=0 new_bufpos=0 buflen=0
stream_seek: WARNING! Can't seek to 0x0 !
Checking for YUV4MPEG2
DEMUXER: freeing demuxer at 0x8a3e5f8
s->pos=0 newpos=0 new_bufpos=0 buflen=0
stream_seek: WARNING! Can't seek to 0x0 !
ASF_check: not ASF guid!
DEMUXER: freeing demuxer at 0x8a3e5f8

This what I seen on other tracks (I tryed cue://image.cue:2 - no case)

The second what I tried to add was the line in stream/stream.c

242 =================== STREAMER =========================
243
244 int stream_fill_buffer(stream_t *s){
245 int len;

246 if (/*s->fd == NULL
*/ s->eof) { s->buf_pos = s->buf_len = 0; return 0; }

247 switch(s->type){
248 case STREAMTYPE_STREAM:
249 + case STREAMTYPE_VCDBINCUE:
250 #ifdef MPLAYER_NETWORK
251 if( s->streaming_ctrl!=NULL && s->streaming_ctrl->streaming_read ) {
252 len=s->streaming_ctrl->streaming_read(s->fd,s->buffer,STREAM_BUFFER_SIZE, s->streaming_ctrl);break;
253 } else {
254 len=read(s->fd,s->buffer,STREAM_BUFFER_SIZE);break;
255 }
256 #else
257 len=read(s->fd,s->buffer,STREAM_BUFFER_SIZE);break;
258 #endif

It helped a litle, but also not enough:

CUE stream_open, filename=image.cue, track=1, available tracks: 0 -> 38471496
STREAM: [cue] cue://image.cue
STREAM: Description: CUE track
STREAM: Author: Albeu
STREAM: Comment: based on the code from ???
s->pos=0 newpos=0 new_bufpos=0 buflen=0
LAVF_check: Monkey's Audio
DEMUXER: freeing demuxer at 0x8a3e5f8
DEMUXER: freeing demuxer at 0x8a3e5f8
Checking for YUV4MPEG2
DEMUXER: freeing demuxer at 0x8a3e5f8
ASF_check: not ASF guid!
DEMUXER: freeing demuxer at 0x8a3e5f8
Checking for NuppelVideo
DEMUXER: freeing demuxer at 0x8a3e5f8
Checking for REAL
DEMUXER: freeing demuxer at 0x8a3e5f8
Checking for SMJPEG
DEMUXER: freeing demuxer at 0x8a3e5f8
[mkv] no head found
DEMUXER: freeing demuxer at 0x8a3e5f8
DEMUXER: freeing demuxer at 0x8a3e5f8
DEMUXER: freeing demuxer at 0x8a3e5f8
Ogg demuxer : Bad page sync
DEMUXER: freeing demuxer at 0x8a3e5f8
Searching demuxer type for filename cue://image.cue ext: .cue
s->pos=1000 newpos=0 new_bufpos=0 buflen=0
Checking for Nullsoft Streaming Video
DEMUXER: freeing demuxer at 0x8a3e5f8
s->pos=3E800 newpos=0 new_bufpos=0 buflen=0
Checking for MOV
DEMUXER: freeing demuxer at 0x8a3e5f8
Checking for VIVO
header block 1 size: 81
DEMUXER: freeing demuxer at 0x8a3e5f8
DEMUXER: freeing demuxer at 0x8a3e5f8
DEMUXER: freeing demuxer at 0x8a3e5f8
DEMUXER: freeing demuxer at 0x8a3e5f8

Then I stopped, because I am not a programmer at all. I feel that I was near to make it work, but who knows.

So, please, refit this "feature".
In attache there are debug before adding
249 + case STREAMTYPE_VCDBINCUE
and after adding this line.

I am a user of gentoo and the version of mplayer was
mplayer-1.0_rc2_p26753 for me. I think PC configuration as well as "configure" keys are meaningless in this case. I didn't try HEAD.

I find this link for cuesheet syntax documentation:
http://digitalx.org/cuesheetsyntax.php

P.S. Pardon my english.

Attachments (2)

debug_before.log (10.3 KB ) - added by zasada_shaman@… 16 years ago.
verbose mplayer output before adding case STREAMTYPE_VCDBINCUE
debug_after.log.gz (64.6 KB ) - added by zasada_shaman@… 16 years ago.
verbose mplayer output after adding case STREAMTYPE_VCDBINCUE

Download all attachments as: .zip

Change History (5)

by zasada_shaman@…, 16 years ago

Attachment: debug_before.log added

verbose mplayer output before adding case STREAMTYPE_VCDBINCUE

comment:1 by zasada_shaman@…, 16 years ago

by zasada_shaman@…, 16 years ago

Attachment: debug_after.log.gz added

verbose mplayer output after adding case STREAMTYPE_VCDBINCUE

comment:2 by zasada_shaman@…, 16 years ago

comment:3 by compn, 13 years ago

Owner: changed from r_togni@… to reimar
Note: See TracTickets for help on using tickets.