ffmpeg / libavformat / flacenc_header.c @ 6cc7f139
History | View | Annotate | Download (1.57 KB)
1 | 06ebe916 | Justin Ruggles | /*
|
---|---|---|---|
2 | * raw FLAC muxer
|
||
3 | * Copyright (C) 2009 Justin Ruggles
|
||
4 | *
|
||
5 | 2912e87a | Mans Rullgard | * This file is part of Libav.
|
6 | 06ebe916 | Justin Ruggles | *
|
7 | 2912e87a | Mans Rullgard | * Libav is free software; you can redistribute it and/or
|
8 | 06ebe916 | Justin Ruggles | * modify it under the terms of the GNU Lesser General Public
|
9 | * License as published by the Free Software Foundation; either
|
||
10 | * version 2.1 of the License, or (at your option) any later version.
|
||
11 | *
|
||
12 | 2912e87a | Mans Rullgard | * Libav is distributed in the hope that it will be useful,
|
13 | 06ebe916 | Justin Ruggles | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
15 | * Lesser General Public License for more details.
|
||
16 | *
|
||
17 | * You should have received a copy of the GNU Lesser General Public
|
||
18 | 2912e87a | Mans Rullgard | * License along with Libav; if not, write to the Free Software
|
19 | 06ebe916 | Justin Ruggles | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
20 | */
|
||
21 | |||
22 | #include "libavcodec/flac.h" |
||
23 | #include "libavcodec/bytestream.h" |
||
24 | #include "avformat.h" |
||
25 | #include "flacenc.h" |
||
26 | |||
27 | ae628ec1 | Anton Khirnov | int ff_flac_write_header(AVIOContext *pb, AVCodecContext *codec,
|
28 | 06ebe916 | Justin Ruggles | int last_block)
|
29 | { |
||
30 | uint8_t header[8] = {
|
||
31 | 0x66, 0x4C, 0x61, 0x43, 0x00, 0x00, 0x00, 0x22 |
||
32 | }; |
||
33 | uint8_t *streaminfo; |
||
34 | enum FLACExtradataFormat format;
|
||
35 | |||
36 | header[4] = last_block ? 0x80 : 0x00; |
||
37 | if (!ff_flac_is_extradata_valid(codec, &format, &streaminfo))
|
||
38 | return -1; |
||
39 | |||
40 | /* write "fLaC" stream marker and first metadata block header if needed */
|
||
41 | if (format == FLAC_EXTRADATA_FORMAT_STREAMINFO) {
|
||
42 | 77eb5504 | Anton Khirnov | avio_write(pb, header, 8);
|
43 | 06ebe916 | Justin Ruggles | } |
44 | |||
45 | /* write STREAMINFO or full header */
|
||
46 | 77eb5504 | Anton Khirnov | avio_write(pb, codec->extradata, codec->extradata_size); |
47 | 06ebe916 | Justin Ruggles | |
48 | return 0; |
||
49 | } |