Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
libavformat
ffm.h
Go to the documentation of this file.
1
/*
2
* FFM (avserver live feed) common header
3
* Copyright (c) 2001 Fabrice Bellard
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
#ifndef AVFORMAT_FFM_H
23
#define AVFORMAT_FFM_H
24
25
#include <stdint.h>
26
#include "
avformat.h
"
27
#include "
avio.h
"
28
29
/* The FFM file is made of blocks of fixed size */
30
#define FFM_HEADER_SIZE 14
31
#define FFM_PACKET_SIZE 4096
32
#define PACKET_ID 0x666d
33
34
/* each packet contains frames (which can span several packets */
35
#define FRAME_HEADER_SIZE 16
36
#define FLAG_KEY_FRAME 0x01
37
#define FLAG_DTS 0x02
38
39
enum
{
40
READ_HEADER
,
41
READ_DATA
,
42
};
43
44
typedef
struct
FFMContext
{
45
/* only reading mode */
46
int64_t
write_index
,
file_size
;
47
int
read_state
;
48
uint8_t
header
[
FRAME_HEADER_SIZE
+4];
49
50
/* read and write */
51
int
first_packet
;
/* true if first packet, needed to set the discontinuity tag */
52
int
packet_size
;
53
int
frame_offset
;
54
int64_t
dts
;
55
uint8_t *
packet_ptr
, *
packet_end
;
56
uint8_t
packet
[
FFM_PACKET_SIZE
];
57
}
FFMContext
;
58
59
int64_t
ffm_read_write_index
(
int
fd);
60
int
ffm_write_write_index
(
int
fd, int64_t pos);
61
void
ffm_set_write_index
(
AVFormatContext
*s, int64_t pos, int64_t file_size);
62
63
#endif
/* AVFORMAT_FFM_H */
FFMContext
struct FFMContext FFMContext
FFMContext::dts
int64_t dts
Definition:
ffm.h:54
avio.h
Buffered I/O operations.
READ_HEADER
Definition:
ffm.h:40
FFMContext::frame_offset
int frame_offset
Definition:
ffm.h:53
AVFormatContext
Format I/O context.
Definition:
avformat.h:863
FFMContext::file_size
int64_t file_size
Definition:
ffm.h:46
FFMContext::packet_end
uint8_t * packet_end
Definition:
ffm.h:55
FFMContext::packet_ptr
uint8_t * packet_ptr
Definition:
ffm.h:55
ffm_write_write_index
int ffm_write_write_index(int fd, int64_t pos)
FFMContext::first_packet
int first_packet
Definition:
ffm.h:51
READ_DATA
Definition:
ffm.h:41
ffm_read_write_index
int64_t ffm_read_write_index(int fd)
FFMContext::header
uint8_t header[FRAME_HEADER_SIZE+4]
Definition:
ffm.h:48
FFMContext::packet_size
int packet_size
Definition:
ffm.h:52
FFMContext
Definition:
ffm.h:44
FRAME_HEADER_SIZE
#define FRAME_HEADER_SIZE
Definition:
ffm.h:35
avformat.h
Main libavformat public API header.
FFMContext::packet
uint8_t packet[FFM_PACKET_SIZE]
Definition:
ffm.h:56
ffm_set_write_index
void ffm_set_write_index(AVFormatContext *s, int64_t pos, int64_t file_size)
FFMContext::read_state
int read_state
Definition:
ffm.h:47
FFMContext::write_index
int64_t write_index
Definition:
ffm.h:46
FFM_PACKET_SIZE
#define FFM_PACKET_SIZE
Definition:
ffm.h:31