diff --git a/libavformat/oggenc.c b/libavformat/oggenc.c index efd57e4060..afed87f8b0 100644 --- a/libavformat/oggenc.c +++ b/libavformat/oggenc.c @@ -90,8 +90,11 @@ static int ogg_build_flac_headers(AVCodecContext *avctx, enum FLACExtradataFormat format; uint8_t *streaminfo; uint8_t *p; + if (!ff_flac_is_extradata_valid(avctx, &format, &streaminfo)) return -1; + + // first packet: STREAMINFO oggstream->header_len[0] = 51; oggstream->header[0] = av_mallocz(51); // per ogg flac specs p = oggstream->header[0]; @@ -106,6 +109,8 @@ static int ogg_build_flac_headers(AVCodecContext *avctx, bytestream_put_byte(&p, 0x00); // streaminfo bytestream_put_be24(&p, 34); bytestream_put_buffer(&p, streaminfo, FLAC_STREAMINFO_SIZE); + + // second packet: VorbisComment oggstream->header_len[1] = 1+3+4+strlen(vendor)+4; oggstream->header[1] = av_mallocz(oggstream->header_len[1]); p = oggstream->header[1]; @@ -116,6 +121,7 @@ static int ogg_build_flac_headers(AVCodecContext *avctx, bytestream_put_le32(&p, strlen(vendor)); bytestream_put_buffer(&p, vendor, strlen(vendor)); bytestream_put_le32(&p, 0); // user comment list length + return 0; }