Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Unified Diff: source/patched-ffmpeg-mt/libavformat/oggenc.c

Issue 3384002: ffmpeg source update for sep 09 (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/ffmpeg/
Patch Set: Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « source/patched-ffmpeg-mt/libavformat/nutdec.c ('k') | source/patched-ffmpeg-mt/libavformat/oma.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: source/patched-ffmpeg-mt/libavformat/oggenc.c
===================================================================
--- source/patched-ffmpeg-mt/libavformat/oggenc.c (revision 59334)
+++ source/patched-ffmpeg-mt/libavformat/oggenc.c (working copy)
@@ -206,14 +206,14 @@
}
static uint8_t *ogg_write_vorbiscomment(int offset, int bitexact,
- int *header_len, AVMetadata *m)
+ int *header_len, AVMetadata *m, int framing_bit)
{
const char *vendor = bitexact ? "ffmpeg" : LIBAVFORMAT_IDENT;
int size;
uint8_t *p, *p0;
unsigned int count;
- size = offset + ff_vorbiscomment_length(m, vendor, &count);
+ size = offset + ff_vorbiscomment_length(m, vendor, &count) + framing_bit;
p = av_mallocz(size);
if (!p)
return NULL;
@@ -221,6 +221,8 @@
p += offset;
ff_vorbiscomment_write(&p, m, vendor, count);
+ if (framing_bit)
+ bytestream_put_byte(&p, 1);
*header_len = size;
return p0;
@@ -254,7 +256,7 @@
bytestream_put_buffer(&p, streaminfo, FLAC_STREAMINFO_SIZE);
// second packet: VorbisComment
- p = ogg_write_vorbiscomment(4, bitexact, &oggstream->header_len[1], m);
+ p = ogg_write_vorbiscomment(4, bitexact, &oggstream->header_len[1], m, 0);
if (!p)
return AVERROR(ENOMEM);
oggstream->header[1] = p;
@@ -285,7 +287,7 @@
AV_WL32(&oggstream->header[0][68], 0); // set extra_headers to 0
// second packet: VorbisComment
- p = ogg_write_vorbiscomment(0, bitexact, &oggstream->header_len[1], m);
+ p = ogg_write_vorbiscomment(0, bitexact, &oggstream->header_len[1], m, 0);
if (!p)
return AVERROR(ENOMEM);
oggstream->header[1] = p;
@@ -352,6 +354,11 @@
return err;
}
} else {
+ uint8_t *p;
+ char *cstr = st->codec->codec_id == CODEC_ID_VORBIS ? "vorbis" : "theora";
+ int header_type = st->codec->codec_id == CODEC_ID_VORBIS ? 3 : 0x81;
+ int framing_bit = st->codec->codec_id == CODEC_ID_VORBIS ? 1 : 0;
+
if (ff_split_xiph_headers(st->codec->extradata, st->codec->extradata_size,
st->codec->codec_id == CODEC_ID_VORBIS ? 30 : 42,
oggstream->header, oggstream->header_len) < 0) {
@@ -359,6 +366,17 @@
av_freep(&st->priv_data);
return -1;
}
+
+ p = ogg_write_vorbiscomment(7, st->codec->flags & CODEC_FLAG_BITEXACT,
+ &oggstream->header_len[1], s->metadata,
+ framing_bit);
+ if (!p)
+ return AVERROR(ENOMEM);
+
+ oggstream->header[1] = p;
+ bytestream_put_byte(&p, header_type);
+ bytestream_put_buffer(&p, cstr, 6);
+
if (st->codec->codec_id == CODEC_ID_THEORA) {
/** KFGSHIFT is the width of the less significant section of the granule position
The less significant section is the frame count since the last keyframe */
« no previous file with comments | « source/patched-ffmpeg-mt/libavformat/nutdec.c ('k') | source/patched-ffmpeg-mt/libavformat/oma.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698