Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-1.1
Commits
2ad668f3
Commit
2ad668f3
authored
Dec 12, 2004
by
Rocky Bernstein
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Go over information that gets set, yet again. Disc things are no longer
playlist-item information.
parent
36ec573e
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
125 additions
and
97 deletions
+125
-97
modules/access/cdda/access.c
modules/access/cdda/access.c
+1
-1
modules/access/cdda/info.c
modules/access/cdda/info.c
+120
-93
modules/access/cdda/info.h
modules/access/cdda/info.h
+4
-3
No files found.
modules/access/cdda/access.c
View file @
2ad668f3
...
@@ -580,7 +580,7 @@ static int CDDAControl( access_t *p_access, int i_query, va_list args )
...
@@ -580,7 +580,7 @@ static int CDDAControl( access_t *p_access, int i_query, va_list args )
}
else
{
}
else
{
snprintf
(
psz_mrl
,
psz_mrl_max
,
"%s%s"
,
snprintf
(
psz_mrl
,
psz_mrl_max
,
"%s%s"
,
CDDA_MRL_PREFIX
,
p_cdda
->
psz_source
);
CDDA_MRL_PREFIX
,
p_cdda
->
psz_source
);
CDDAMetaInfo
(
p_access
,
-
1
,
psz_mrl
);
CDDAMetaInfo
(
p_access
,
CDIO_INVALID_TRACK
,
psz_mrl
);
free
(
psz_mrl
);
free
(
psz_mrl
);
}
}
...
...
modules/access/cdda/info.c
View file @
2ad668f3
...
@@ -38,6 +38,10 @@
...
@@ -38,6 +38,10 @@
# include <errno.h>
# include <errno.h>
#endif
#endif
static
char
*
CDDAFormatStr
(
const
access_t
*
p_access
,
cdda_data_t
*
p_cdda
,
const
char
format_str
[],
const
char
*
psz_mrl
,
track_t
i_track
);
#ifdef HAVE_LIBCDDB
#ifdef HAVE_LIBCDDB
#define free_and_dup(var, val) \
#define free_and_dup(var, val) \
...
@@ -210,13 +214,15 @@ cddb_end: ;
...
@@ -210,13 +214,15 @@ cddb_end: ;
/*
/*
Saves Meta Information about the CD-DA.
Saves Meta Information about the CD-DA.
Meta information used in "stream and media info" or in playlist
info. The intialization of CD-Text or CDDB is done here though.
Therefore, this should be called before CDDAMetaInfo is called.
Saves information that CDDAMetaInfo uses. Should be called before
CDDAMetaInfo is called.
*/
*/
void
void
CDDAMetaInfoInit
(
access_t
*
p_access
,
int
i_track
)
CDDAMetaInfoInit
(
access_t
*
p_access
)
{
{
cdda_data_t
*
p_cdda
=
(
cdda_data_t
*
)
p_access
->
p_sys
;
cdda_data_t
*
p_cdda
=
(
cdda_data_t
*
)
p_access
->
p_sys
;
...
@@ -235,10 +241,9 @@ CDDAMetaInfoInit( access_t *p_access, int i_track )
...
@@ -235,10 +241,9 @@ CDDAMetaInfoInit( access_t *p_access, int i_track )
#define TITLE_MAX 30
#define TITLE_MAX 30
{
{
unsigned
int
i
;
track_t
i_track
;
p_cdda
->
p_cdtext
[
0
]
=
cdio_get_cdtext
(
p_cdda
->
p_cdio
,
0
);
for
(
i
=
0
;
i
<
p_cdda
->
i_tracks
;
i
++
)
for
(
i
_track
=
0
;
i_track
<
p_cdda
->
i_tracks
;
i_track
++
)
{
{
p_cdda
->
p_cdtext
[
i_track
]
=
p_cdda
->
p_cdtext
[
i_track
]
=
cdio_get_cdtext
(
p_cdda
->
p_cdio
,
i_track
);
cdio_get_cdtext
(
p_cdda
->
p_cdio
,
i_track
);
...
@@ -247,39 +252,46 @@ CDDAMetaInfoInit( access_t *p_access, int i_track )
...
@@ -247,39 +252,46 @@ CDDAMetaInfoInit( access_t *p_access, int i_track )
}
}
/*
/*
Gets and saves Meta Information about the CD-DA.
In the Control routine, we handle Meta Information requests and
In the Control routine, we handle Meta Information requests and
basically copy what w
e've saved here
.
basically copy what w
as saved in CDDAMetaInfoInit
.
Meta information is also used elsewhere such as in "stream and
If i_track is CDIO_INVALID_TRACK we are probably asking about the entire
media info" or in playlist info. The intialization of CD-Text or CDDB
CD.
is done here though.
*/
*/
void
void
CDDAMetaInfo
(
access_t
*
p_access
,
in
t
i_track
,
/*const*/
char
*
psz_mrl
)
CDDAMetaInfo
(
access_t
*
p_access
,
track_
t
i_track
,
/*const*/
char
*
psz_mrl
)
{
{
cdda_data_t
*
p_cdda
=
(
cdda_data_t
*
)
p_access
->
p_sys
;
cdda_data_t
*
p_cdda
=
(
cdda_data_t
*
)
p_access
->
p_sys
;
char
*
psz_meta_title
=
psz_mrl
;
char
*
psz_meta_title
=
psz_mrl
;
char
*
psz_meta_artist
=
NULL
;
char
*
psz_meta_artist
=
NULL
;
char
*
psz_name
=
NULL
;
char
*
config_varname
=
MODULE_STRING
"-title-format"
;
if
(
!
p_cdda
)
return
;
if
(
!
p_cdda
)
return
;
#ifdef HAVE_LIBCDDB
#ifdef HAVE_LIBCDDB
/* Set up for Meta and name for CDDB access. */
if
(
p_cdda
->
b_cddb_enabled
&&
p_cdda
->
cddb
.
disc
)
if
(
p_cdda
->
b_cddb_enabled
&&
p_cdda
->
cddb
.
disc
)
{
{
if
(
i_track
==
-
1
)
if
(
p_cdda
->
b_cddb_enabled
)
{
config_varname
=
MODULE_STRING
"-cddb-title-format"
;
}
if
(
CDIO_INVALID_TRACK
==
i_track
)
{
{
psz_meta_title
=
p_cdda
->
cddb
.
disc
->
title
;
psz_meta_title
=
p_cdda
->
cddb
.
disc
->
title
;
psz_meta_artist
=
p_cdda
->
cddb
.
disc
->
artist
;
psz_meta_artist
=
p_cdda
->
cddb
.
disc
->
artist
;
if
(
p_cdda
->
cddb
.
disc
->
genre
&&
strlen
(
p_cdda
->
cddb
.
disc
->
genre
)
)
input_Control
(
p_cdda
->
p_input
,
INPUT_SET_NAME
,
add_cddb_meta
(
genre
,
VLC_META_GENRE
);
p_cdda
->
cddb
.
disc
->
artist
);
if
(
0
!=
p_cdda
->
cddb
.
disc
->
year
)
add_cddb_meta_fmt
(
year
,
"%d"
,
VLC_META_DATE
);
}
}
else
else
{
{
cddb_track_t
*
t
=
cddb_disc_get_track
(
p_cdda
->
cddb
.
disc
,
cddb_track_t
*
t
=
cddb_disc_get_track
(
p_cdda
->
cddb
.
disc
,
i_track
-
1
);
i_track
-
1
);
if
(
t
!=
NULL
)
if
(
t
!=
NULL
)
{
{
if
(
t
->
title
!=
NULL
)
if
(
t
->
title
!=
NULL
)
...
@@ -292,8 +304,6 @@ CDDAMetaInfo( access_t *p_access, int i_track, /*const*/ char *psz_mrl )
...
@@ -292,8 +304,6 @@ CDDAMetaInfo( access_t *p_access, int i_track, /*const*/ char *psz_mrl )
}
}
}
}
}
}
add_cddb_meta
(
genre
,
VLC_META_GENRE
);
add_cddb_meta_fmt
(
year
,
"%d"
,
VLC_META_DATE
);
}
}
#endif
/*HAVE_LIBCDDB*/
#endif
/*HAVE_LIBCDDB*/
...
@@ -314,20 +324,29 @@ CDDAMetaInfo( access_t *p_access, int i_track, /*const*/ char *psz_mrl )
...
@@ -314,20 +324,29 @@ CDDAMetaInfo( access_t *p_access, int i_track, /*const*/ char *psz_mrl )
_
(
"Disc"
),
_
(
"Duration"
),
"%s"
,
_
(
"Disc"
),
_
(
"Duration"
),
"%s"
,
secstotimestr
(
psz_buffer
,
i_duration
)
);
secstotimestr
(
psz_buffer
,
i_duration
)
);
input_Control
(
p_cdda
->
p_input
,
INPUT_ADD_INFO
,
if
(
p_cdda
->
psz_mcn
)
{
_
(
"Disc"
),
_
(
"Tracks"
),
"%d"
,
p_cdda
->
i_tracks
);
input_Control
(
p_cdda
->
p_input
,
INPUT_ADD_INFO
,
_
(
"Disc"
),
_
(
"Media Catalog Number (MCN)"
),
"%s"
,
p_cdda
->
psz_mcn
);
input_Control
(
p_cdda
->
p_input
,
INPUT_ADD_INFO
,
_
(
"Disc"
),
_
(
"Tracks"
),
"%d"
,
p_cdda
->
i_tracks
);
}
#ifdef HAVE_LIBCDDB
#ifdef HAVE_LIBCDDB
if
(
p_cdda
->
b_cddb_enabled
&&
p_cdda
->
cddb
.
disc
)
if
(
p_cdda
->
b_cddb_enabled
&&
p_cdda
->
cddb
.
disc
)
{
{
add_cddb_disc_info_str
(
"Artist (CDDB)"
,
artist
);
add_cddb_disc_info_str
(
"Artist (CDDB)"
,
artist
);
add_cddb_disc_info_str
(
"Genre (CDDB)"
,
genre
);
if
(
CDDB_CAT_INVALID
!=
p_cdda
->
cddb
.
disc
->
category
)
add_cddb_disc_info_str
(
"Extended Data (CDDB)"
,
ext_data
);
add_info_str
(
"Disc"
,
"Category (CDDB)"
,
add_cddb_disc_info_val
(
"Year (CDDB)"
,
"%d"
,
year
);
CDDB_CATEGORY
[
p_cdda
->
cddb
.
disc
->
category
]
);
add_cddb_disc_info_val
(
"Disc ID (CDDB)"
,
"%x"
,
discid
);
add_cddb_disc_info_val
(
"Disc ID (CDDB)"
,
"%x"
,
discid
);
add_cddb_disc_info_str
(
"Extended Data (CDDB)"
,
ext_data
);
add_cddb_disc_info_str
(
"Genre (CDDB)"
,
genre
);
add_cddb_disc_info_str
(
"Title (CDDB)"
,
title
);
add_cddb_disc_info_str
(
"Title (CDDB)"
,
title
);
add_info_str
(
"Disc"
,
"Category (CDDB)"
,
if
(
0
!=
p_cdda
->
cddb
.
disc
->
year
)
CDDB_CATEGORY
[
p_cdda
->
cddb
.
disc
->
category
]
);
add_cddb_disc_info_val
(
"Year (CDDB)"
,
"%d"
,
year
);
}
}
#endif
/*HAVE_LIBCDDB*/
#endif
/*HAVE_LIBCDDB*/
...
@@ -365,12 +384,21 @@ CDDAMetaInfo( access_t *p_access, int i_track, /*const*/ char *psz_mrl )
...
@@ -365,12 +384,21 @@ CDDAMetaInfo( access_t *p_access, int i_track, /*const*/ char *psz_mrl )
cdio_get_track_lsn
(
p_cdda
->
p_cdio
,
i_track
);
cdio_get_track_lsn
(
p_cdda
->
p_cdio
,
i_track
);
mtime_t
i_duration
=
i_track_frames
/
CDIO_CD_FRAMES_PER_SEC
;
mtime_t
i_duration
=
i_track_frames
/
CDIO_CD_FRAMES_PER_SEC
;
char
*
psz_mrl
;
snprintf
(
psz_track
,
TITLE_MAX
,
"%s %02d"
,
_
(
"Track"
),
i_track
);
snprintf
(
psz_track
,
TITLE_MAX
,
"%s %02d"
,
_
(
"Track"
),
i_track
);
input_Control
(
p_cdda
->
p_input
,
INPUT_ADD_INFO
,
psz_track
,
input_Control
(
p_cdda
->
p_input
,
INPUT_ADD_INFO
,
psz_track
,
_
(
"Duration"
),
"%s"
,
_
(
"Duration"
),
"%s"
,
secstotimestr
(
psz_buffer
,
i_duration
)
);
secstotimestr
(
psz_buffer
,
i_duration
)
);
asprintf
(
&
psz_mrl
,
"%s%s@T%u"
,
CDDA_MRL_PREFIX
,
p_cdda
->
psz_source
,
i_track
);
input_Control
(
p_cdda
->
p_input
,
INPUT_ADD_INFO
,
psz_track
,
_
(
"MRL"
),
"%s"
,
psz_mrl
);
free
(
psz_mrl
);
if
(
p_cdda
->
p_cdtext
[
i_track
])
if
(
p_cdda
->
p_cdtext
[
i_track
])
{
{
add_cdtext_info_str
(
psz_track
,
"Arranger (CD-Text)"
,
add_cdtext_info_str
(
psz_track
,
"Arranger (CD-Text)"
,
...
@@ -408,11 +436,26 @@ CDDAMetaInfo( access_t *p_access, int i_track, /*const*/ char *psz_mrl )
...
@@ -408,11 +436,26 @@ CDDAMetaInfo( access_t *p_access, int i_track, /*const*/ char *psz_mrl )
/* Above we should have set psz_meta_title and psz_meta_artist
/* Above we should have set psz_meta_title and psz_meta_artist
to CDDB or CD-Text values or the default value depending on
to CDDB or CD-Text values or the default value depending on
availablity and user preferences. So now add it to VLC's meta.
availablity and user preferences.
We also set above config_varname to the format used
So now add the title and artist to VLC's meta, and the
name as shown in the status bar and playlist entry.
*/
*/
add_meta_val
(
VLC_META_TITLE
,
psz_meta_title
);
add_meta_val
(
VLC_META_TITLE
,
psz_meta_title
);
if
(
psz_meta_artist
)
if
(
psz_meta_artist
)
add_meta_val
(
VLC_META_ARTIST
,
psz_meta_artist
);
add_meta_val
(
VLC_META_ARTIST
,
psz_meta_artist
);
if
(
CDIO_INVALID_TRACK
!=
i_track
)
{
psz_name
=
CDDAFormatStr
(
p_access
,
p_cdda
,
config_GetPsz
(
p_access
,
config_varname
),
psz_mrl
,
i_track
);
input_Control
(
p_cdda
->
p_input
,
INPUT_SET_NAME
,
psz_name
);
}
}
}
}
}
...
@@ -473,8 +516,9 @@ cdda_data_t *p_cdda, char *psz_cdtext)
...
@@ -473,8 +516,9 @@ cdda_data_t *p_cdda, char *psz_cdtext)
%n : The number of tracks on the CD
%n : The number of tracks on the CD
%p : The artist/performer/composer in the track **
%p : The artist/performer/composer in the track **
%T : The track number **
%T : The track number **
%s : Number of seconds in this track
%s : Number of seconds in this track, or seconds in CD if invalid track
%t : The track name or MRL if no name **
%S : Number of seconds on the CD
%t : The track name or MRL if no name
%Y : The year 19xx or 20xx **
%Y : The year 19xx or 20xx **
%% : a %
%% : a %
*/
*/
...
@@ -484,7 +528,7 @@ CDDAFormatStr( const access_t *p_access, cdda_data_t *p_cdda,
...
@@ -484,7 +528,7 @@ CDDAFormatStr( const access_t *p_access, cdda_data_t *p_cdda,
{
{
#define TEMP_STR_SIZE 256
#define TEMP_STR_SIZE 256
#define TEMP_STR_LEN (TEMP_STR_SIZE-1)
#define TEMP_STR_LEN (TEMP_STR_SIZE-1)
static
char
temp_str
[
TEMP_STR_SIZE
];
static
char
temp_str
[
TEMP_STR_SIZE
];
size_t
i
;
size_t
i
;
char
*
tp
=
temp_str
;
char
*
tp
=
temp_str
;
vlc_bool_t
saw_control_prefix
=
false
;
vlc_bool_t
saw_control_prefix
=
false
;
...
@@ -555,6 +599,7 @@ CDDAFormatStr( const access_t *p_access, cdda_data_t *p_cdda,
...
@@ -555,6 +599,7 @@ CDDAFormatStr( const access_t *p_access, cdda_data_t *p_cdda,
add_format_num_info
(
p_cdda
->
cddb
.
disc
->
year
,
"%5d"
);
add_format_num_info
(
p_cdda
->
cddb
.
disc
->
year
,
"%5d"
);
break
;
break
;
case
't'
:
case
't'
:
if
(
CDIO_INVALID_TRACK
==
i_track
)
break
;
if
(
p_cdda
&&
p_cdda
->
b_cddb_enabled
&&
p_cdda
->
cddb
.
disc
)
if
(
p_cdda
&&
p_cdda
->
b_cddb_enabled
&&
p_cdda
->
cddb
.
disc
)
{
{
cddb_track_t
*
t
=
cddb_disc_get_track
(
p_cdda
->
cddb
.
disc
,
cddb_track_t
*
t
=
cddb_disc_get_track
(
p_cdda
->
cddb
.
disc
,
...
@@ -574,6 +619,7 @@ CDDAFormatStr( const access_t *p_access, cdda_data_t *p_cdda,
...
@@ -574,6 +619,7 @@ CDDAFormatStr( const access_t *p_access, cdda_data_t *p_cdda,
}
}
break
;
break
;
case
'p'
:
case
'p'
:
if
(
CDIO_INVALID_TRACK
==
i_track
)
break
;
if
(
p_cdda
->
p_cdtext
[
i_track
]
if
(
p_cdda
->
p_cdtext
[
i_track
]
&&
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_PERFORMER
])
&&
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_PERFORMER
])
psz
=
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_PERFORMER
];
psz
=
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_PERFORMER
];
...
@@ -586,6 +632,7 @@ CDDAFormatStr( const access_t *p_access, cdda_data_t *p_cdda,
...
@@ -586,6 +632,7 @@ CDDAFormatStr( const access_t *p_access, cdda_data_t *p_cdda,
}
}
goto
format_str
;
goto
format_str
;
case
'e'
:
case
'e'
:
if
(
CDIO_INVALID_TRACK
==
i_track
)
break
;
if
(
p_cdda
->
p_cdtext
[
i_track
]
if
(
p_cdda
->
p_cdtext
[
i_track
]
&&
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_MESSAGE
])
&&
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_MESSAGE
])
psz
=
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_MESSAGE
];
psz
=
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_MESSAGE
];
...
@@ -598,19 +645,6 @@ CDDAFormatStr( const access_t *p_access, cdda_data_t *p_cdda,
...
@@ -598,19 +645,6 @@ CDDAFormatStr( const access_t *p_access, cdda_data_t *p_cdda,
}
}
goto
format_str
;
goto
format_str
;
break
;
break
;
case
's'
:
if
(
p_cdda
->
b_cddb_enabled
)
{
char
psz_buffer
[
MSTRTIME_MAX_SIZE
];
unsigned
int
i_track_frames
=
cdio_get_track_lsn
(
p_cdda
->
p_cdio
,
i_track
+
1
)
-
cdio_get_track_lsn
(
p_cdda
->
p_cdio
,
i_track
);
mtime_t
i_duration
=
i_track_frames
/
CDIO_CD_FRAMES_PER_SEC
;
add_format_str_info
(
secstotimestr
(
psz_buffer
,
i_duration
)
);
}
else
goto
not_special
;
break
;
#else
#else
case
'a'
:
case
'a'
:
if
(
p_cdda
->
p_cdtext
[
0
]
if
(
p_cdda
->
p_cdtext
[
0
]
...
@@ -633,11 +667,13 @@ CDDAFormatStr( const access_t *p_access, cdda_data_t *p_cdda,
...
@@ -633,11 +667,13 @@ CDDAFormatStr( const access_t *p_access, cdda_data_t *p_cdda,
add_format_str_info
(
p_cdda
->
p_cdtext
[
0
]
->
field
[
CDTEXT_DISCID
]);
add_format_str_info
(
p_cdda
->
p_cdtext
[
0
]
->
field
[
CDTEXT_DISCID
]);
break
;
break
;
case
'p'
:
case
'p'
:
if
(
CDIO_INVALID_TRACK
==
i_track
)
break
;
if
(
p_cdda
->
p_cdtext
[
i_track
]
if
(
p_cdda
->
p_cdtext
[
i_track
]
&&
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_PERFORMER
])
&&
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_PERFORMER
])
psz
=
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_PERFORMER
];
psz
=
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_PERFORMER
];
goto
format_str
;
goto
format_str
;
case
't'
:
case
't'
:
if
(
CDIO_INVALID_TRACK
==
i_track
)
break
;
if
(
p_cdda
->
p_cdtext
[
i_track
]
if
(
p_cdda
->
p_cdtext
[
i_track
]
&&
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_TITLE
])
&&
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_TITLE
])
psz
=
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_TITLE
];
psz
=
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_TITLE
];
...
@@ -645,6 +681,7 @@ CDDAFormatStr( const access_t *p_access, cdda_data_t *p_cdda,
...
@@ -645,6 +681,7 @@ CDDAFormatStr( const access_t *p_access, cdda_data_t *p_cdda,
psz
=
psz_mrl
;
psz
=
psz_mrl
;
goto
format_str
;
goto
format_str
;
case
'e'
:
case
'e'
:
if
(
CDIO_INVALID_TRACK
==
i_track
)
break
;
if
(
p_cdda
->
p_cdtext
[
i_track
]
if
(
p_cdda
->
p_cdtext
[
i_track
]
&&
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_MESSAGE
])
&&
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_MESSAGE
])
psz
=
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_MESSAGE
];
psz
=
p_cdda
->
p_cdtext
[
i_track
]
->
field
[
CDTEXT_MESSAGE
];
...
@@ -652,6 +689,34 @@ CDDAFormatStr( const access_t *p_access, cdda_data_t *p_cdda,
...
@@ -652,6 +689,34 @@ CDDAFormatStr( const access_t *p_access, cdda_data_t *p_cdda,
break
;
break
;
#endif
/*HAVE_LIBCDDB*/
#endif
/*HAVE_LIBCDDB*/
case
's'
:
if
(
CDIO_INVALID_TRACK
!=
i_track
)
{
char
psz_buffer
[
MSTRTIME_MAX_SIZE
];
unsigned
int
i_track_frames
=
cdio_get_track_lsn
(
p_cdda
->
p_cdio
,
i_track
+
1
)
-
cdio_get_track_lsn
(
p_cdda
->
p_cdio
,
i_track
);
mtime_t
i_duration
=
i_track_frames
/
CDIO_CD_FRAMES_PER_SEC
;
add_format_str_info
(
secstotimestr
(
psz_buffer
,
i_duration
)
);
break
;
}
/* Fall through to disc duration if CDIO_INVALID_TRACK */
case
'S'
:
{
char
psz_buffer
[
MSTRTIME_MAX_SIZE
];
unsigned
int
i_track_frames
=
cdio_get_track_lba
(
p_cdda
->
p_cdio
,
CDIO_CDROM_LEADOUT_TRACK
);
mtime_t
i_duration
=
i_track_frames
/
CDIO_CD_FRAMES_PER_SEC
;
add_format_str_info
(
secstotimestr
(
psz_buffer
,
i_duration
)
);
break
;
}
case
'M'
:
case
'M'
:
add_format_str_info
(
psz_mrl
);
add_format_str_info
(
psz_mrl
);
break
;
break
;
...
@@ -755,27 +820,6 @@ int CDDAAddMetaToItem( access_t *p_access, cdda_data_t *p_cdda,
...
@@ -755,27 +820,6 @@ int CDDAAddMetaToItem( access_t *p_access, cdda_data_t *p_cdda,
playlist_ItemAddInfo
(
p_item
,
_
(
"Track"
),
_
(
"Track Number"
),
playlist_ItemAddInfo
(
p_item
,
_
(
"Track"
),
_
(
"Track Number"
),
"%d"
,
i_track
);
"%d"
,
i_track
);
if
(
p_cdda
->
p_cdtext
[
0
])
{
const
cdtext_t
*
p
=
p_cdda
->
p_cdtext
[
0
];
add_playlist_track_info_str
(
"Disc Arranger (CD-Text)"
,
p
->
field
[
CDTEXT_ARRANGER
]);
add_playlist_track_info_str
(
"Disc Composer (CD-Text)"
,
p
->
field
[
CDTEXT_COMPOSER
]);
add_playlist_track_info_str
(
"Disc ID (CD-Text)"
,
p
->
field
[
CDTEXT_DISCID
]);
add_playlist_track_info_str
(
"Disc Genre (CD-Text)"
,
p
->
field
[
CDTEXT_GENRE
]);
add_playlist_track_info_str
(
"Disc Message (CD-Text)"
,
p
->
field
[
CDTEXT_MESSAGE
]);
add_playlist_track_info_str
(
"Disc Performer (CD-Text)"
,
p
->
field
[
CDTEXT_PERFORMER
]);
add_playlist_track_info_str
(
"Disc Songwriter (CD-Text)"
,
p
->
field
[
CDTEXT_SONGWRITER
]);
add_playlist_track_info_str
(
"Disc Title (CD-Text)"
,
p
->
field
[
CDTEXT_TITLE
]);
}
if
(
p_cdda
->
p_cdtext
[
i_track
])
if
(
p_cdda
->
p_cdtext
[
i_track
])
{
{
const
cdtext_t
*
p
=
p_cdda
->
p_cdtext
[
i_track
];
const
cdtext_t
*
p
=
p_cdda
->
p_cdtext
[
i_track
];
...
@@ -801,34 +845,17 @@ int CDDAAddMetaToItem( access_t *p_access, cdda_data_t *p_cdda,
...
@@ -801,34 +845,17 @@ int CDDAAddMetaToItem( access_t *p_access, cdda_data_t *p_cdda,
cddb_track_t
*
t
=
cddb_disc_get_track
(
p_cdda
->
cddb
.
disc
,
cddb_track_t
*
t
=
cddb_disc_get_track
(
p_cdda
->
cddb
.
disc
,
i_track
-
p_cdda
->
i_first_track
);
i_track
-
p_cdda
->
i_first_track
);
add_playlist_track_info_str
(
"Disc Album (CDDB)"
,
p_cdda
->
cddb
.
disc
->
title
);
add_playlist_track_info_str
(
"Disc Artist(s) (CDDB)"
,
p_cdda
->
cddb
.
disc
->
artist
);
add_playlist_track_info_str
(
"Disc Category (CDDB)"
,
CDDB_CATEGORY
[
p_cdda
->
cddb
.
disc
->
category
]);
add_playlist_track_info_str
(
"Disc Genre (CDDB)"
,
p_cdda
->
cddb
.
disc
->
genre
);
if
(
p_cdda
->
cddb
.
disc
->
discid
)
{
playlist_ItemAddInfo
(
p_item
,
_
(
"Track"
),
_
(
"Disc ID (CDDB)"
),
"%x"
,
p_cdda
->
cddb
.
disc
->
discid
);
}
if
(
p_cdda
->
cddb
.
disc
->
year
!=
0
)
{
playlist_ItemAddInfo
(
p_item
,
_
(
"Track"
),
_
(
"Year (CDDB)"
),
"%5d"
,
p_cdda
->
cddb
.
disc
->
year
);
}
if
(
t
)
if
(
t
)
{
{
if
(
t
->
artist
)
if
(
t
->
artist
)
add_playlist_track_info_str
(
"
Track
Artist (CDDB)"
,
add_playlist_track_info_str
(
"Artist (CDDB)"
,
t
->
artist
);
t
->
artist
);
if
(
t
->
title
)
if
(
t
->
title
)
add_playlist_track_info_str
(
"T
rack T
itle (CDDB)"
,
add_playlist_track_info_str
(
"Title (CDDB)"
,
t
->
title
);
t
->
title
);
if
(
t
->
ext_data
)
add_playlist_track_info_str
(
"Extended information (CDDB)"
,
t
->
ext_data
);
}
}
}
}
#endif
/*HAVE_LIBCDDB*/
#endif
/*HAVE_LIBCDDB*/
...
@@ -883,15 +910,15 @@ CDDAFixupPlaylist( access_t *p_access, cdda_data_t *p_cdda,
...
@@ -883,15 +910,15 @@ CDDAFixupPlaylist( access_t *p_access, cdda_data_t *p_cdda,
{
{
snprintf
(
psz_mrl
,
psz_mrl_max
,
"%s%s@T%u"
,
CDDA_MRL_PREFIX
,
snprintf
(
psz_mrl
,
psz_mrl_max
,
"%s%s@T%u"
,
CDDA_MRL_PREFIX
,
p_cdda
->
psz_source
,
p_cdda
->
i_track
);
p_cdda
->
psz_source
,
p_cdda
->
i_track
);
CDDAMetaInfoInit
(
p_access
,
p_cdda
->
i_track
);
CDDAMetaInfoInit
(
p_access
);
CDDAMetaInfo
(
p_access
,
p_cdda
->
i_track
,
psz_mrl
);
CDDAMetaInfo
(
p_access
,
p_cdda
->
i_track
,
psz_mrl
);
}
}
else
else
{
{
snprintf
(
psz_mrl
,
psz_mrl_max
,
"%s%s"
,
CDDA_MRL_PREFIX
,
snprintf
(
psz_mrl
,
psz_mrl_max
,
"%s%s"
,
CDDA_MRL_PREFIX
,
p_cdda
->
psz_source
);
p_cdda
->
psz_source
);
CDDAMetaInfoInit
(
p_access
,
-
1
);
CDDAMetaInfoInit
(
p_access
);
CDDAMetaInfo
(
p_access
,
-
1
,
psz_mrl
);
CDDAMetaInfo
(
p_access
,
CDIO_INVALID_TRACK
,
psz_mrl
);
}
}
p_item
=
playlist_ItemGetByInput
(
p_playlist
,
p_item
=
playlist_ItemGetByInput
(
p_playlist
,
...
...
modules/access/cdda/info.h
View file @
2ad668f3
...
@@ -28,11 +28,12 @@ int CDDAFixupPlaylist( access_t *p_access, cdda_data_t *p_cdda,
...
@@ -28,11 +28,12 @@ int CDDAFixupPlaylist( access_t *p_access, cdda_data_t *p_cdda,
vlc_bool_t
b_single_track
);
vlc_bool_t
b_single_track
);
/*
/*
Gets and save
s CDDA Meta Information. In the Control routine,
Set
s CDDA Meta Information. In the Control routine,
we handle Meta Information requests and basically copy what we've
we handle Meta Information requests and basically copy what we've
saved here.
saved here.
*/
*/
void
CDDAMetaInfo
(
access_t
*
p_access
,
int
,
/*const*/
char
*
psz_mrl
);
void
CDDAMetaInfo
(
access_t
*
p_access
,
track_t
i_track
,
/*const*/
char
*
psz_mrl
);
/*
/*
Saves Meta Information about the CD-DA.
Saves Meta Information about the CD-DA.
...
@@ -40,7 +41,7 @@ void CDDAMetaInfo( access_t *p_access, int, /*const*/ char *psz_mrl );
...
@@ -40,7 +41,7 @@ void CDDAMetaInfo( access_t *p_access, int, /*const*/ char *psz_mrl );
Saves information that CDDAMetaInfo uses. Should be called before
Saves information that CDDAMetaInfo uses. Should be called before
CDDAMetaInfo is called.
CDDAMetaInfo is called.
*/
*/
void
CDDAMetaInfoInit
(
access_t
*
p_access
,
int
i_track
);
void
CDDAMetaInfoInit
(
access_t
*
p_access
);
/*
/*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment