#include "vorbiscomment.h"
#include "libavcodec/bytestream.h"
-int ff_flac_write_header(ByteIOContext *pb, AVCodecContext *codec,
- int last_block)
-{
- uint8_t header[8] = {
- 0x66, 0x4C, 0x61, 0x43, 0x00, 0x00, 0x00, 0x22
- };
- uint8_t *streaminfo;
- enum FLACExtradataFormat format;
-
- header[4] = last_block ? 0x80 : 0x00;
- if (!ff_flac_is_extradata_valid(codec, &format, &streaminfo))
- return -1;
-
- /* write "fLaC" stream marker and first metadata block header if needed */
- if (format == FLAC_EXTRADATA_FORMAT_STREAMINFO) {
- put_buffer(pb, header, 8);
- }
-
- /* write STREAMINFO or full header */
- put_buffer(pb, codec->extradata, codec->extradata_size);
-
- return 0;
-}
static int flac_write_block_padding(ByteIOContext *pb, unsigned int n_padding_bytes,
int last_block)
return 0;
}
-static int flac_write_block_comment(ByteIOContext *pb, AVMetadata *m,
+static int flac_write_block_comment(ByteIOContext *pb, AVMetadata **m,
int last_block, int bitexact)
{
const char *vendor = bitexact ? "ffmpeg" : LIBAVFORMAT_IDENT;
unsigned int len, count;
uint8_t *p, *p0;
- len = ff_vorbiscomment_length(m, vendor, &count);
+ ff_metadata_conv(m, ff_vorbiscomment_metadata_conv, NULL);
+
+ len = ff_vorbiscomment_length(*m, vendor, &count);
p0 = av_malloc(len+4);
if (!p0)
return AVERROR(ENOMEM);
if (ret)
return ret;
- ret = flac_write_block_comment(s->pb, s->metadata, 0,
+ ret = flac_write_block_comment(s->pb, &s->metadata, 0,
codec->flags & CODEC_FLAG_BITEXACT);
if (ret)
return ret;
flac_write_packet,
flac_write_trailer,
.flags= AVFMT_NOTIMESTAMPS,
- .metadata_conv = ff_vorbiscomment_metadata_conv,
};