- header_len = 0;
- while (ogg_stream_flush(stream_out, &page))
- header_len += page.body_len + page.header_len;
- ret = len;
- PARA_INFO_LOG("header_len = %d\n", header_len);
-err2:
- ogg_stream_destroy(stream_in);
- ogg_stream_destroy(stream_out);
-err1:
- ogg_sync_destroy(sync_in);
+ ret = -E_STREAM_PACKETOUT;
+ if (ogg_stream_packetout(&stream, &packet) != 1)
+ goto out;
+
+ ret = -E_VORBIS;
+ if (vorbis_synthesis_headerin(&vi, &vc, &packet) < 0)
+ goto out;
+ if (vi.rate == 0)
+ goto out;
+ afhi->channels = vi.channels;
+ afhi->frequency = vi.rate;
+ afhi->bitrate = vi.bitrate_nominal / 1000;
+ PARA_DEBUG_LOG("channels: %i, sampling rate: %i, bitrate: %i\n",
+ afhi->channels, afhi->frequency, afhi->bitrate);
+ ret = read_vorbis_comment(oss, &stream, &vi, &vc);
+ if (ret < 0)
+ goto out;
+ afhi->tags.artist = para_strdup(vorbis_comment_query(&vc, "artist", 0));
+ afhi->tags.title = para_strdup(vorbis_comment_query(&vc, "title", 0));
+ afhi->tags.album = para_strdup(vorbis_comment_query(&vc, "album", 0));
+ afhi->tags.year = para_strdup(vorbis_comment_query(&vc, "year", 0));
+ afhi->tags.comment = para_strdup(vorbis_comment_query(&vc, "comment", 0));
+
+ afhi->header_offset = 0;
+ afhi->header_len = oss->returned;
+ ret = 1;
+out: