# HG changeset patch # User jbr # Date 1269388725 0 # Node ID e3fb53259d866a37f6826f808ccd59ca04901ebd # Parent cf5eee67f9eb4604a3f7afdff2f0f03656ba1c9b 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. diff -r cf5eee67f9eb -r e3fb53259d86 Makefile --- a/Makefile Tue Mar 23 17:22:25 2010 +0000 +++ b/Makefile Tue Mar 23 23:58:45 2010 +0000 @@ -71,7 +71,8 @@ OBJS-$(CONFIG_FLAC_DEMUXER) += flacdec.o raw.o id3v1.o \ id3v2.o oggparsevorbis.o \ vorbiscomment.o -OBJS-$(CONFIG_FLAC_MUXER) += flacenc.o vorbiscomment.o +OBJS-$(CONFIG_FLAC_MUXER) += flacenc.o flacenc_header.o \ + vorbiscomment.o OBJS-$(CONFIG_FLIC_DEMUXER) += flic.o OBJS-$(CONFIG_FLV_DEMUXER) += flvdec.o OBJS-$(CONFIG_FLV_MUXER) += flvenc.o avc.o @@ -103,7 +104,8 @@ OBJS-$(CONFIG_MATROSKA_DEMUXER) += matroskadec.o matroska.o \ riff.o isom.o rmdec.o rm.o OBJS-$(CONFIG_MATROSKA_MUXER) += matroskaenc.o matroska.o \ - riff.o isom.o avc.o + riff.o isom.o avc.o \ + flacenc_header.o OBJS-$(CONFIG_MJPEG_DEMUXER) += raw.o OBJS-$(CONFIG_MJPEG_MUXER) += raw.o OBJS-$(CONFIG_MLP_DEMUXER) += raw.o id3v2.o diff -r cf5eee67f9eb -r e3fb53259d86 flacenc.h --- a/flacenc.h Tue Mar 23 17:22:25 2010 +0000 +++ b/flacenc.h Tue Mar 23 23:58:45 2010 +0000 @@ -26,28 +26,7 @@ #include "libavcodec/bytestream.h" #include "avformat.h" -static 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; -} +int ff_flac_write_header(ByteIOContext *pb, AVCodecContext *codec, + int last_block); #endif /* AVFORMAT_FLACENC_H */ diff -r cf5eee67f9eb -r e3fb53259d86 flacenc_header.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flacenc_header.c Tue Mar 23 23:58:45 2010 +0000 @@ -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; +}