From 06ebe9161e93c36af3faa0e852a3358cca4a2bc7 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Tue, 23 Mar 2010 23:58:45 +0000 Subject: [PATCH] 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 --- libavformat/Makefile | 6 +++-- libavformat/flacenc.h | 25 ++---------------- libavformat/flacenc_header.c | 49 ++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 25 deletions(-) create mode 100644 libavformat/flacenc_header.c diff --git a/libavformat/Makefile b/libavformat/Makefile index c244ceec94..b669dad495 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -71,7 +71,8 @@ OBJS-$(CONFIG_FILMSTRIP_MUXER) += filmstripenc.o 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_M4V_MUXER) += raw.o 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 --git a/libavformat/flacenc.h b/libavformat/flacenc.h index 471376692a..8ad1c267ab 100644 --- a/libavformat/flacenc.h +++ b/libavformat/flacenc.h @@ -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 --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; +}