Libav
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
libavformat
daudenc.c
Go to the documentation of this file.
1
/*
2
* D-Cinema audio muxer
3
* Copyright (c) 2005 Reimar Döffinger
4
*
5
* This file is part of Libav.
6
*
7
* Libav 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
* Libav 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 Libav; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
*/
21
22
#include "
avformat.h
"
23
24
static
int
daud_write_header
(
struct
AVFormatContext
*s)
25
{
26
AVCodecContext
*codec = s->
streams
[0]->
codec
;
27
if
(codec->
channels
!=6 || codec->
sample_rate
!=96000)
28
return
-1;
29
return
0;
30
}
31
32
static
int
daud_write_packet
(
struct
AVFormatContext
*s,
AVPacket
*pkt)
33
{
34
if
(pkt->
size
> 65535) {
35
av_log
(s,
AV_LOG_ERROR
,
36
"Packet size too large for s302m. (%d > 65535)\n"
, pkt->
size
);
37
return
-1;
38
}
39
avio_wb16
(s->
pb
, pkt->
size
);
40
avio_wb16
(s->
pb
, 0x8010);
// unknown
41
avio_write
(s->
pb
, pkt->
data
, pkt->
size
);
42
return
0;
43
}
44
45
AVOutputFormat
ff_daud_muxer
= {
46
.
name
=
"daud"
,
47
.long_name =
NULL_IF_CONFIG_SMALL
(
"D-Cinema audio"
),
48
.extensions =
"302"
,
49
.audio_codec =
AV_CODEC_ID_PCM_S24DAUD
,
50
.video_codec =
AV_CODEC_ID_NONE
,
51
.write_header =
daud_write_header
,
52
.write_packet =
daud_write_packet
,
53
.flags =
AVFMT_NOTIMESTAMPS
,
54
};
AV_CODEC_ID_PCM_S24DAUD
Definition:
avcodec.h:315
AV_CODEC_ID_NONE
Definition:
avcodec.h:106
ff_daud_muxer
AVOutputFormat ff_daud_muxer
Definition:
daudenc.c:45
AVPacket::size
int size
Definition:
avcodec.h:974
AVFormatContext
Format I/O context.
Definition:
avformat.h:922
AVFormatContext::streams
AVStream ** streams
A list of all streams in the file.
Definition:
avformat.h:990
AVPacket::data
uint8_t * data
Definition:
avcodec.h:973
avio_write
void avio_write(AVIOContext *s, const unsigned char *buf, int size)
Definition:
aviobuf.c:165
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition:
log.h:123
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:145
av_log
void av_log(void *avcl, int level, const char *fmt,...)
Definition:
log.c:169
daud_write_packet
static int daud_write_packet(struct AVFormatContext *s, AVPacket *pkt)
Definition:
daudenc.c:32
AVStream::codec
AVCodecContext * codec
Codec context associated with this stream.
Definition:
avformat.h:718
AVOutputFormat::name
const char * name
Definition:
avformat.h:446
AVFMT_NOTIMESTAMPS
#define AVFMT_NOTIMESTAMPS
Format does not need / have any timestamps.
Definition:
avformat.h:416
AVCodecContext::sample_rate
int sample_rate
samples per second
Definition:
avcodec.h:1807
AVFormatContext::pb
AVIOContext * pb
I/O context.
Definition:
avformat.h:964
AVCodecContext
main external API structure.
Definition:
avcodec.h:1050
avio_wb16
void avio_wb16(AVIOContext *s, unsigned int val)
Definition:
aviobuf.c:353
daud_write_header
static int daud_write_header(struct AVFormatContext *s)
Definition:
daudenc.c:24
avformat.h
Main libavformat public API header.
AVOutputFormat
Definition:
avformat.h:445
AVCodecContext::channels
int channels
number of audio channels
Definition:
avcodec.h:1808
AVPacket
This structure stores compressed data.
Definition:
avcodec.h:950
Generated on Sun Sep 1 2019 16:57:46 for Libav by
1.8.8