[FFmpeg-devel] [PATCH] speex in ogg muxer
Justin Ruggles
justin.ruggles
Sun Jun 21 23:03:22 CEST 2009
Baptiste Coudurier wrote:
> Hi Justin,
>
> Justin Ruggles wrote:
>> Hi,
>>
>> This patch adds speex support to the ogg muxer. It basically does the
>> same thing as Ogg/FLAC, in that the 1st packet is a global header from
>> extradata and the 2nd packet is vorbiscomment metadata.
>>
>> This seems to work just fine for speex-to-speex stream copy, but
>> probably would not work for flv-to-speex because flv doesn't to have any
>> speex extradata from what I can tell. I guess a header could be
>> constructed, but that would be a separate patch to the flv demuxer.
>>
>> This patch is a precursor to libspeex encoding support, which I'll be
>> sending shortly.
>>
>> -Justin
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> Index: libavformat/oggenc.c
>> ===================================================================
>> --- libavformat/oggenc.c (revision 19244)
>> +++ libavformat/oggenc.c (working copy)
>> @@ -104,17 +125,39 @@
>> bytestream_put_byte(&p, 0x00); // streaminfo
>> bytestream_put_be24(&p, 34);
>> bytestream_put_buffer(&p, streaminfo, FLAC_STREAMINFO_SIZE);
>> - oggstream->header_len[1] = 1+3+4+strlen(vendor)+4;
>> - oggstream->header[1] = av_mallocz(oggstream->header_len[1]);
>> - p = oggstream->header[1];
>> + p = ogg_write_vorbiscomment(4, bitexact, &oggstream->header_len[1]);
>> + if (!p)
>> + return -1;
>
> AVERROR(ENOMEM)
fixed.
>> @@ -144,6 +188,12 @@
>> av_log(s, AV_LOG_ERROR, "Extradata corrupted\n");
>> av_freep(&st->priv_data);
>> }
>> + } else if (st->codec->codec_id == CODEC_ID_SPEEX) {
>> + if (ogg_build_speex_headers(st->codec, oggstream,
>> + st->codec->flags & CODEC_FLAG_BITEXACT) < 0) {
>> + av_log(s, AV_LOG_ERROR, "error writing Speex headers\n");
>> + av_freep(&st->priv_data);
>> + }
>
> return error here with the return code of the func :>
> Yes, it seems flac miss it too, this needs a fix.
>
> patch fine otherwise, maybe a micro bump for avformat would be nice.
fixed. new patch attached. the new patch also differs in that it
overrides the extra_headers field in the Speex header to be 0 since only
the 2 required headers are written.
-Justin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-oggenc-add-support-for-Ogg-Speex-muxing.patch
Type: text/x-patch
Size: 5445 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20090621/317ae20a/attachment.bin>
More information about the ffmpeg-devel
mailing list