Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
libavformat
rtpenc_vp8.c
Go to the documentation of this file.
1
/*
2
* RTP VP8 Packetizer
3
* Copyright (c) 2010 Josh Allmann
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 "
rtpenc.h
"
23
24
/* Based on a draft spec for VP8 RTP.
25
* ( http://www.webmproject.org/code/specs/rtp/ ) */
26
void
ff_rtp_send_vp8
(
AVFormatContext
*
s1
,
const
uint8_t *
buf
,
int
size
)
27
{
28
RTPMuxContext
*s = s1->
priv_data
;
29
int
len
, max_packet_size;
30
31
s->
buf_ptr
= s->
buf
;
32
s->
timestamp
= s->
cur_timestamp
;
33
max_packet_size = s->
max_payload_size
- 1;
// minus one for header byte
34
35
*s->
buf_ptr
++ = 1;
// 0b1 indicates start of frame
36
while
(size > 0) {
37
len =
FFMIN
(size, max_packet_size);
38
39
memcpy(s->
buf_ptr
, buf, len);
40
ff_rtp_send_data
(s1, s->
buf
, len+1, size == len);
// marker bit is last packet in frame
41
42
size -=
len
;
43
buf +=
len
;
44
s->
buf_ptr
= s->
buf
;
45
*s->
buf_ptr
++ = 0;
// payload descriptor
46
}
47
}