annotate flacenc_header.c @ 5953:c3ebc8d7af38 libavformat

Remove useless assert(), since this can (in theora) be used for any Xiph codec, so there's no reason to (invalidly) limit it to only Theora. Also fixes issue 1880 (compilation error on -DDEBUG).
author rbultje
date Thu, 15 Apr 2010 13:30:12 +0000
parents e3fb53259d86
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4581
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
1 /*
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
2 * raw FLAC muxer
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
3 * Copyright (C) 2009 Justin Ruggles
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
4 *
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
5 * This file is part of FFmpeg.
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
6 *
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
9 * License as published by the Free Software Foundation; either
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
11 *
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
15 * Lesser General Public License for more details.
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
16 *
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
20 */
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
21
5868
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
22 #include "libavcodec/flac.h"
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
23 #include "libavcodec/bytestream.h"
4581
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
24 #include "avformat.h"
5873
e3fb53259d86 Put ff_flac_write_header() in a separate C file to allow it to be shared without
jbr
parents: 5868
diff changeset
25 #include "flacenc.h"
4581
c52d40f0a955 Share the function to write a raw FLAC header and use it in the Matroska
jbr
parents:
diff changeset
26
5873
e3fb53259d86 Put ff_flac_write_header() in a separate C file to allow it to be shared without
jbr
parents: 5868
diff changeset
27 int ff_flac_write_header(ByteIOContext *pb, AVCodecContext *codec,
e3fb53259d86 Put ff_flac_write_header() in a separate C file to allow it to be shared without
jbr
parents: 5868
diff changeset
28 int last_block)
5868
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
29 {
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
30 uint8_t header[8] = {
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
31 0x66, 0x4C, 0x61, 0x43, 0x00, 0x00, 0x00, 0x22
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
32 };
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
33 uint8_t *streaminfo;
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
34 enum FLACExtradataFormat format;
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
35
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
36 header[4] = last_block ? 0x80 : 0x00;
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
37 if (!ff_flac_is_extradata_valid(codec, &format, &streaminfo))
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
38 return -1;
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
39
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
40 /* write "fLaC" stream marker and first metadata block header if needed */
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
41 if (format == FLAC_EXTRADATA_FORMAT_STREAMINFO) {
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
42 put_buffer(pb, header, 8);
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
43 }
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
44
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
45 /* write STREAMINFO or full header */
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
46 put_buffer(pb, codec->extradata, codec->extradata_size);
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
47
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
48 return 0;
92daebc423f4 Move ff_flac_write_header() to flacenc.h, which removes the Matroska muxer's
jbr
parents: 5857
diff changeset
49 }