mirror of https://git.ffmpeg.org/ffmpeg.git
mp3enc: add lame tag with start padding info
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
7b521c52c4
commit
57d5a224ce
|
@ -116,7 +116,7 @@ static int mp3_parse_vbr_tags(AVFormatContext *s, AVStream *st, int64_t base)
|
||||||
avio_skip(s->pb, 4);
|
avio_skip(s->pb, 4);
|
||||||
|
|
||||||
v = avio_rb32(s->pb);
|
v = avio_rb32(s->pb);
|
||||||
if(v == MKBETAG('L', 'A', 'M', 'E')) {
|
if(v == MKBETAG('L', 'A', 'M', 'E') || v == MKBETAG('L', 'a', 'v', 'f')) {
|
||||||
avio_skip(s->pb, 21-4);
|
avio_skip(s->pb, 21-4);
|
||||||
v= avio_rb24(s->pb);
|
v= avio_rb24(s->pb);
|
||||||
mp3->start_pad = v>>12;
|
mp3->start_pad = v>>12;
|
||||||
|
|
|
@ -123,6 +123,7 @@ static int mp3_write_xing(AVFormatContext *s)
|
||||||
MPADecodeHeader c;
|
MPADecodeHeader c;
|
||||||
int srate_idx, ver = 0, i, channels;
|
int srate_idx, ver = 0, i, channels;
|
||||||
int needed;
|
int needed;
|
||||||
|
const char *vendor = (codec->flags & CODEC_FLAG_BITEXACT) ? "Lavf" : LIBAVFORMAT_IDENT;
|
||||||
|
|
||||||
if (!s->pb->seekable)
|
if (!s->pb->seekable)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -177,7 +178,9 @@ static int mp3_write_xing(AVFormatContext *s)
|
||||||
+ 4 // frames/size/toc flags
|
+ 4 // frames/size/toc flags
|
||||||
+ 4 // frames
|
+ 4 // frames
|
||||||
+ 4 // size
|
+ 4 // size
|
||||||
+ VBR_TOC_SIZE; // toc
|
+ VBR_TOC_SIZE // toc
|
||||||
|
+ 24
|
||||||
|
;
|
||||||
|
|
||||||
if (needed <= c.frame_size)
|
if (needed <= c.frame_size)
|
||||||
break;
|
break;
|
||||||
|
@ -202,6 +205,12 @@ static int mp3_write_xing(AVFormatContext *s)
|
||||||
for (i = 0; i < VBR_TOC_SIZE; ++i)
|
for (i = 0; i < VBR_TOC_SIZE; ++i)
|
||||||
avio_w8(s->pb, (uint8_t)(255 * i / VBR_TOC_SIZE));
|
avio_w8(s->pb, (uint8_t)(255 * i / VBR_TOC_SIZE));
|
||||||
|
|
||||||
|
for (i = 0; i < strlen(vendor); ++i)
|
||||||
|
avio_w8(s->pb, vendor[i]);
|
||||||
|
for (; i < 21; ++i)
|
||||||
|
avio_w8(s->pb, 0);
|
||||||
|
avio_wb24(s->pb, FFMAX(codec->delay - 528 - 1, 0)<<12);
|
||||||
|
|
||||||
ffio_fill(s->pb, 0, c.frame_size - needed);
|
ffio_fill(s->pb, 0, c.frame_size - needed);
|
||||||
avio_flush(s->pb);
|
avio_flush(s->pb);
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
67cbcc79f018afb68f7d81625bfa234c *./tests/data/lavf-fate/lavf.mp3
|
40a4e41ae74ec8dacdf02402831a6a58 *./tests/data/lavf-fate/lavf.mp3
|
||||||
97230 ./tests/data/lavf-fate/lavf.mp3
|
97230 ./tests/data/lavf-fate/lavf.mp3
|
||||||
./tests/data/lavf-fate/lavf.mp3 CRC=0x6c9850fe
|
./tests/data/lavf-fate/lavf.mp3 CRC=0x6c9850fe
|
||||||
|
|
Loading…
Reference in New Issue