ogg: ogg_getReplayGainInfo() returns replay_gain_info pointer
Some code simplification. Avoid pointers to pointers.
This commit is contained in:
@@ -93,33 +93,31 @@ static const char *ogg_parseComment(const char *comment, const char *needle)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static struct replay_gain_info *
|
||||||
ogg_getReplayGainInfo(char **comments,
|
ogg_getReplayGainInfo(char **comments)
|
||||||
struct replay_gain_info **infoPtr)
|
|
||||||
{
|
{
|
||||||
|
struct replay_gain_info *rgi;
|
||||||
const char *temp;
|
const char *temp;
|
||||||
bool found = false;
|
bool found = false;
|
||||||
|
|
||||||
if (*infoPtr)
|
rgi = replay_gain_info_new();
|
||||||
replay_gain_info_free(*infoPtr);
|
|
||||||
*infoPtr = replay_gain_info_new();
|
|
||||||
|
|
||||||
while (*comments) {
|
while (*comments) {
|
||||||
if ((temp =
|
if ((temp =
|
||||||
ogg_parseComment(*comments, "replaygain_track_gain"))) {
|
ogg_parseComment(*comments, "replaygain_track_gain"))) {
|
||||||
(*infoPtr)->track_gain = atof(temp);
|
rgi->track_gain = atof(temp);
|
||||||
found = true;
|
found = true;
|
||||||
} else if ((temp = ogg_parseComment(*comments,
|
} else if ((temp = ogg_parseComment(*comments,
|
||||||
"replaygain_album_gain"))) {
|
"replaygain_album_gain"))) {
|
||||||
(*infoPtr)->album_gain = atof(temp);
|
rgi->album_gain = atof(temp);
|
||||||
found = true;
|
found = true;
|
||||||
} else if ((temp = ogg_parseComment(*comments,
|
} else if ((temp = ogg_parseComment(*comments,
|
||||||
"replaygain_track_peak"))) {
|
"replaygain_track_peak"))) {
|
||||||
(*infoPtr)->track_peak = atof(temp);
|
rgi->track_peak = atof(temp);
|
||||||
found = true;
|
found = true;
|
||||||
} else if ((temp = ogg_parseComment(*comments,
|
} else if ((temp = ogg_parseComment(*comments,
|
||||||
"replaygain_album_peak"))) {
|
"replaygain_album_peak"))) {
|
||||||
(*infoPtr)->album_peak = atof(temp);
|
rgi->album_peak = atof(temp);
|
||||||
found = true;
|
found = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,9 +125,11 @@ ogg_getReplayGainInfo(char **comments,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!found) {
|
if (!found) {
|
||||||
replay_gain_info_free(*infoPtr);
|
replay_gain_info_free(rgi);
|
||||||
*infoPtr = NULL;
|
rgi = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return rgi;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *VORBIS_COMMENT_TRACK_KEY = "tracknumber";
|
static const char *VORBIS_COMMENT_TRACK_KEY = "tracknumber";
|
||||||
@@ -275,6 +275,8 @@ oggvorbis_decode(struct decoder *decoder, struct input_stream *inStream)
|
|||||||
if (current_section != prev_section) {
|
if (current_section != prev_section) {
|
||||||
/*printf("new song!\n"); */
|
/*printf("new song!\n"); */
|
||||||
vorbis_info *vi = ov_info(&vf, -1);
|
vorbis_info *vi = ov_info(&vf, -1);
|
||||||
|
struct replay_gain_info *new_rgi;
|
||||||
|
|
||||||
audio_format.channels = vi->channels;
|
audio_format.channels = vi->channels;
|
||||||
audio_format.sample_rate = vi->rate;
|
audio_format.sample_rate = vi->rate;
|
||||||
if (!initialized) {
|
if (!initialized) {
|
||||||
@@ -289,7 +291,12 @@ oggvorbis_decode(struct decoder *decoder, struct input_stream *inStream)
|
|||||||
comments = ov_comment(&vf, -1)->user_comments;
|
comments = ov_comment(&vf, -1)->user_comments;
|
||||||
putOggCommentsIntoOutputBuffer(decoder, inStream,
|
putOggCommentsIntoOutputBuffer(decoder, inStream,
|
||||||
comments);
|
comments);
|
||||||
ogg_getReplayGainInfo(comments, &replayGainInfo);
|
new_rgi = ogg_getReplayGainInfo(comments);
|
||||||
|
if (new_rgi != NULL) {
|
||||||
|
if (replayGainInfo != NULL)
|
||||||
|
replay_gain_info_free(replayGainInfo);
|
||||||
|
replayGainInfo = new_rgi;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
prev_section = current_section;
|
prev_section = current_section;
|
||||||
|
Reference in New Issue
Block a user