Commit 197bbcf4 authored by Michael Niedermayer's avatar Michael Niedermayer

mp3enc: move mp3_update_xing() down

Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent f276a490
...@@ -255,32 +255,6 @@ static void mp3_xing_add_frame(MP3Context *mp3, AVPacket *pkt) ...@@ -255,32 +255,6 @@ static void mp3_xing_add_frame(MP3Context *mp3, AVPacket *pkt)
} }
} }
static void mp3_update_xing(AVFormatContext *s)
{
MP3Context *mp3 = s->priv_data;
int i;
/* replace "Xing" identification string with "Info" for CBR files. */
if (!mp3->has_variable_bitrate) {
avio_seek(s->pb, mp3->xing_offset, SEEK_SET);
ffio_wfourcc(s->pb, "Info");
}
avio_seek(s->pb, mp3->xing_offset + 8, SEEK_SET);
avio_wb32(s->pb, mp3->frames);
avio_wb32(s->pb, mp3->size);
avio_w8(s->pb, 0); // first toc entry has to be zero.
for (i = 1; i < XING_TOC_SIZE; ++i) {
int j = i * mp3->pos / XING_TOC_SIZE;
int seek_point = 256LL * mp3->bag[j] / mp3->size;
avio_w8(s->pb, FFMIN(seek_point, 255));
}
avio_seek(s->pb, 0, SEEK_END);
}
static int mp3_write_audio_packet(AVFormatContext *s, AVPacket *pkt) static int mp3_write_audio_packet(AVFormatContext *s, AVPacket *pkt)
{ {
MP3Context *mp3 = s->priv_data; MP3Context *mp3 = s->priv_data;
...@@ -341,6 +315,32 @@ static int mp3_queue_flush(AVFormatContext *s) ...@@ -341,6 +315,32 @@ static int mp3_queue_flush(AVFormatContext *s)
return ret; return ret;
} }
static void mp3_update_xing(AVFormatContext *s)
{
MP3Context *mp3 = s->priv_data;
int i;
/* replace "Xing" identification string with "Info" for CBR files. */
if (!mp3->has_variable_bitrate) {
avio_seek(s->pb, mp3->xing_offset, SEEK_SET);
ffio_wfourcc(s->pb, "Info");
}
avio_seek(s->pb, mp3->xing_offset + 8, SEEK_SET);
avio_wb32(s->pb, mp3->frames);
avio_wb32(s->pb, mp3->size);
avio_w8(s->pb, 0); // first toc entry has to be zero.
for (i = 1; i < XING_TOC_SIZE; ++i) {
int j = i * mp3->pos / XING_TOC_SIZE;
int seek_point = 256LL * mp3->bag[j] / mp3->size;
avio_w8(s->pb, FFMIN(seek_point, 255));
}
avio_seek(s->pb, 0, SEEK_END);
}
static int mp2_write_trailer(struct AVFormatContext *s) static int mp2_write_trailer(struct AVFormatContext *s)
{ {
uint8_t buf[ID3v1_TAG_SIZE]; uint8_t buf[ID3v1_TAG_SIZE];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment