FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavformat
ircamenc.c
Go to the documentation of this file.
1
/*
2
* IRCAM muxer
3
* Copyright (c) 2012 Paul B Mahol
4
*
5
* This file is part of FFmpeg.
6
*
7
* FFmpeg is free software; you can redistribute it and/or
8
* 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
* FFmpeg is distributed in the hope that it will be useful,
13
* 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
* License along with FFmpeg; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
*/
21
22
#include "
libavutil/intreadwrite.h
"
23
#include "
avformat.h
"
24
#include "
avio_internal.h
"
25
#include "
internal.h
"
26
#include "
rawenc.h
"
27
#include "
ircam.h
"
28
29
static
int
ircam_write_header
(
AVFormatContext
*
s
)
30
{
31
AVCodecContext
*codec = s->
streams
[0]->
codec
;
32
uint32_t
tag
;
33
34
if
(s->
nb_streams
!= 1) {
35
av_log
(s,
AV_LOG_ERROR
,
"only one stream is supported\n"
);
36
return
AVERROR
(EINVAL);
37
}
38
39
tag =
ff_codec_get_tag
(
ff_codec_ircam_le_tags
, codec->
codec_id
);
40
if
(!tag) {
41
av_log
(s,
AV_LOG_ERROR
,
"unsupported codec\n"
);
42
return
AVERROR
(EINVAL);
43
}
44
45
avio_wl32
(s->
pb
, 0x0001A364);
46
avio_wl32
(s->
pb
,
av_q2intfloat
((
AVRational
){codec->
sample_rate
, 1}));
47
avio_wl32
(s->
pb
, codec->
channels
);
48
avio_wl32
(s->
pb
, tag);
49
ffio_fill
(s->
pb
, 0, 1008);
50
return
0;
51
}
52
53
AVOutputFormat
ff_ircam_muxer
= {
54
.
name
=
"ircam"
,
55
.extensions =
"sf,ircam"
,
56
.long_name =
NULL_IF_CONFIG_SMALL
(
"Berkeley/IRCAM/CARL Sound Format"
),
57
.audio_codec =
AV_CODEC_ID_PCM_S16LE
,
58
.video_codec =
AV_CODEC_ID_NONE
,
59
.write_header =
ircam_write_header
,
60
.write_packet =
ff_raw_write_packet
,
61
.codec_tag = (
const
AVCodecTag
*
const
[]){
ff_codec_ircam_le_tags
, 0 },
62
};
s
const char * s
Definition:
avisynth_c.h:631
AV_CODEC_ID_NONE
Definition:
avcodec.h:102
ircam_write_header
static int ircam_write_header(AVFormatContext *s)
Definition:
ircamenc.c:29
ircam.h
av_q2intfloat
uint32_t av_q2intfloat(AVRational q)
Converts a AVRational to a IEEE 32bit float.
Definition:
rational.c:151
ff_codec_get_tag
unsigned int ff_codec_get_tag(const AVCodecTag *tags, enum AVCodecID id)
Definition:
utils.c:2811
AVFormatContext
Format I/O context.
Definition:
avformat.h:1314
avio_wl32
void avio_wl32(AVIOContext *s, unsigned int val)
Definition:
aviobuf.c:324
AVFormatContext::streams
AVStream ** streams
A list of all streams in the file.
Definition:
avformat.h:1382
AVCodecTag
Definition:
internal.h:42
avio_internal.h
tag
uint32_t tag
Definition:
movenc.c:1348
av_log
#define av_log(a,...)
Definition:
tableprint_vlc.h:28
ff_codec_ircam_le_tags
const AVCodecTag ff_codec_ircam_le_tags[]
Definition:
ircam.c:25
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition:
log.h:176
AVERROR
#define AVERROR(e)
Definition:
error.h:43
rawenc.h
NULL_IF_CONFIG_SMALL
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition:
internal.h:176
internal.h
AVStream::codec
AVCodecContext * codec
Codec context associated with this stream.
Definition:
avformat.h:896
AVFormatContext::nb_streams
unsigned int nb_streams
Number of elements in AVFormatContext.streams.
Definition:
avformat.h:1370
ffio_fill
void ffio_fill(AVIOContext *s, int b, int count)
Definition:
aviobuf.c:168
intreadwrite.h
AVOutputFormat::name
const char * name
Definition:
avformat.h:523
ff_raw_write_packet
int ff_raw_write_packet(AVFormatContext *s, AVPacket *pkt)
Definition:
rawenc.c:26
AVCodecContext::codec_id
enum AVCodecID codec_id
Definition:
avcodec.h:1549
AVCodecContext::sample_rate
int sample_rate
samples per second
Definition:
avcodec.h:2287
AVFormatContext::pb
AVIOContext * pb
I/O context.
Definition:
avformat.h:1356
AVCodecContext
main external API structure.
Definition:
avcodec.h:1532
AVRational
rational number numerator/denominator
Definition:
rational.h:43
avformat.h
Main libavformat public API header.
AV_CODEC_ID_PCM_S16LE
Definition:
avcodec.h:322
AVOutputFormat
Definition:
avformat.h:522
ff_ircam_muxer
AVOutputFormat ff_ircam_muxer
Definition:
ircamenc.c:53
AVCodecContext::channels
int channels
number of audio channels
Definition:
avcodec.h:2288
Generated on Mon Feb 15 2016 15:20:46 for FFmpeg by
1.8.6