diff options
author | Justin Ruggles <justin.ruggles@gmail.com> | 2010-03-23 23:58:45 +0000 |
---|---|---|
committer | Justin Ruggles <justin.ruggles@gmail.com> | 2010-03-23 23:58:45 +0000 |
commit | 06ebe9161e93c36af3faa0e852a3358cca4a2bc7 (patch) | |
tree | 63814155a6200e2a25158619c2d316878ac716d2 /libavformat/flacenc_header.c | |
parent | 85f273c7ca7e0035054fa55f98bd06c551f518b0 (diff) | |
download | ffmpeg-06ebe9161e93c36af3faa0e852a3358cca4a2bc7.tar.gz |
Put ff_flac_write_header() in a separate C file to allow it to be shared without
duplicating code or adding a dependency on vorbiscomment.o.
Originally committed as revision 22652 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/flacenc_header.c')
-rw-r--r-- | libavformat/flacenc_header.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/libavformat/flacenc_header.c b/libavformat/flacenc_header.c new file mode 100644 index 0000000000..92a129a7d6 --- /dev/null +++ b/libavformat/flacenc_header.c @@ -0,0 +1,49 @@ +/* + * raw FLAC muxer + * Copyright (C) 2009 Justin Ruggles + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "libavcodec/flac.h" +#include "libavcodec/bytestream.h" +#include "avformat.h" +#include "flacenc.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; +} |