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
rtpenc_latm.c
Go to the documentation of this file.
1
/*
2
* RTP Packetization of MPEG-4 Audio (RFC 3016)
3
* Copyright (c) 2011 Juan Carlos Rodriguez <ing.juancarlosrodriguez@hotmail.com>
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 "
avformat.h
"
23
#include "
rtpenc.h
"
24
25
void
ff_rtp_send_latm
(
AVFormatContext
*
s1
,
const
uint8_t
*buff,
int
size
)
26
{
27
/* MP4A-LATM
28
* The RTP payload format specification is described in RFC 3016
29
* The encoding specifications are provided in ISO/IEC 14496-3 */
30
31
RTPMuxContext
*
s
= s1->
priv_data
;
32
int
header_size;
33
int
offset
= 0;
34
int
len
= 0;
35
36
/* skip ADTS header, if present */
37
if
((s1->
streams
[0]->
codec
->
extradata_size
) == 0) {
38
size -= 7;
39
buff += 7;
40
}
41
42
/* PayloadLengthInfo() */
43
header_size = size/0xFF + 1;
44
memset(s->
buf
, 0xFF, header_size - 1);
45
s->
buf
[header_size - 1] = size % 0xFF;
46
47
s->
timestamp
= s->
cur_timestamp
;
48
49
/* PayloadMux() */
50
while
(size > 0) {
51
len =
FFMIN
(size, s->
max_payload_size
- (!offset ? header_size : 0));
52
size -=
len
;
53
if
(!offset) {
54
memcpy(s->
buf
+ header_size, buff, len);
55
ff_rtp_send_data
(s1, s->
buf
, header_size + len, !size);
56
}
else
{
57
ff_rtp_send_data
(s1, buff + offset, len, !size);
58
}
59
offset +=
len
;
60
}
61
}
Generated on Sun Mar 23 2014 23:50:13 for FFmpeg by
1.8.2