Skip to content

Instantly share code, notes, and snippets.

@mineo
Created July 5, 2011 16:09
Show Gist options
  • Save mineo/1065140 to your computer and use it in GitHub Desktop.
Save mineo/1065140 to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <sys/types.h>
#include <strings.h>
#include <cdio/cdio.h>
#include <cdio/cdtext.h>
int main(int argc, const char *argv[]){
track_t i_first_track;
track_t i_tracks;
if (!cdio_init){
fprintf(stderr, "cdio_init failed");
return 1;
}
CdIo_t* p_cdio = cdio_open("/dev/sr0", DRIVER_LINUX);
i_first_track = cdio_get_first_track_num(p_cdio);
i_tracks = cdio_get_num_tracks(p_cdio);
if (NULL == p_cdio){
printf("no cd");
return 1;
}
else{
track_t i_last_track = i_first_track + i_tracks;
int i;
cdio_read(p_cdio, NULL, 1024 * 1024);
for (i = 0 ; i < i_last_track; i++){
fprintf(stdout, "track %i\n", i);
cdio_isrc_t isrc;
driver_return_code_t status;
bzero(&isrc, sizeof(isrc));
status = mmc_isrc_track_read_subchannel(p_cdio, i, isrc);
if (! status == DRIVER_OP_SUCCESS && isrc[0] != '\0'){
fprintf(stderr, "no isrc\n");
}
else{
fprintf(stdout, "ISRC %s\n", isrc);
}
cdtext_t* cdtext = cdio_get_cdtext(p_cdio, i);
if (NULL == cdtext){
fprintf(stderr, "no cdtext\n");
}
else{
int j;
for (j=0; j < MAX_CDTEXT_FIELDS; j++) {
if (cdtext->field[j]) {
printf("\t%s: %s\n", cdtext_field2str(j), cdtext->field[j]);
}
}
}
}
cdio_destroy(p_cdio);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment