Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
libavformat
movenc.h
Go to the documentation of this file.
1
/*
2
* MOV, 3GP, MP4 muxer
3
* Copyright (c) 2003 Thomas Raivio
4
* Copyright (c) 2004 Gildas Bazin <gbazin at videolan dot org>
5
* Copyright (c) 2009 Baptiste Coudurier <baptiste dot coudurier at gmail dot com>
6
*
7
* This file is part of Libav.
8
*
9
* Libav is free software; you can redistribute it and/or
10
* modify it under the terms of the GNU Lesser General Public
11
* License as published by the Free Software Foundation; either
12
* version 2.1 of the License, or (at your option) any later version.
13
*
14
* Libav is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
* Lesser General Public License for more details.
18
*
19
* You should have received a copy of the GNU Lesser General Public
20
* License along with Libav; if not, write to the Free Software
21
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
*/
23
24
#ifndef AVFORMAT_MOVENC_H
25
#define AVFORMAT_MOVENC_H
26
27
#include "
avformat.h
"
28
29
#define MOV_INDEX_CLUSTER_SIZE 16384
30
#define MOV_TIMESCALE 1000
31
32
#define RTP_MAX_PACKET_SIZE 1450
33
34
#define MODE_MP4 0x01
35
#define MODE_MOV 0x02
36
#define MODE_3GP 0x04
37
#define MODE_PSP 0x08 // example working PSP command line:
38
// avconv -i testinput.avi -f psp -r 14.985 -s 320x240 -b 768 -ar 24000 -ab 32 M4V00001.MP4
39
#define MODE_3G2 0x10
40
#define MODE_IPOD 0x20
41
42
typedef
struct
MOVIentry
{
43
uint64_t
pos
;
44
int64_t
dts
;
45
unsigned
int
size
;
46
unsigned
int
samplesInChunk
;
47
unsigned
int
entries
;
48
int
cts
;
49
#define MOV_SYNC_SAMPLE 0x0001
50
#define MOV_PARTIAL_SYNC_SAMPLE 0x0002
51
uint32_t
flags
;
52
}
MOVIentry
;
53
54
typedef
struct
HintSample
{
55
uint8_t *
data
;
56
int
size
;
57
int
sample_number
;
58
int
offset
;
59
int
own_data
;
60
}
HintSample
;
61
62
typedef
struct
{
63
int
size
;
64
int
len
;
65
HintSample
*
samples
;
66
}
HintSampleQueue
;
67
68
typedef
struct
MOVIndex
{
69
int
mode
;
70
int
entry
;
71
unsigned
timescale
;
72
uint64_t
time
;
73
int64_t
trackDuration
;
74
long
sampleCount
;
75
long
sampleSize
;
76
int
hasKeyframes
;
77
#define MOV_TRACK_CTTS 0x0001
78
#define MOV_TRACK_STPS 0x0002
79
uint32_t
flags
;
80
int
language
;
81
int
trackID
;
82
int
tag
;
83
AVCodecContext
*
enc
;
84
85
int
vosLen
;
86
uint8_t *
vosData
;
87
MOVIentry
*
cluster
;
88
int
audio_vbr
;
89
int
height
;
90
uint32_t
tref_tag
;
91
int
tref_id
;
92
93
int
hint_track
;
94
int
src_track
;
95
AVFormatContext
*
rtp_ctx
;
96
uint32_t
prev_rtp_ts
;
97
int64_t
cur_rtp_ts_unwrapped
;
98
uint32_t
max_packet_size
;
99
100
HintSampleQueue
sample_queue
;
101
}
MOVTrack
;
102
103
typedef
struct
MOVMuxContext
{
104
const
AVClass
*
av_class
;
105
int
mode
;
106
int64_t
time
;
107
int
nb_streams
;
108
int
chapter_track
;
109
int64_t
mdat_pos
;
110
uint64_t
mdat_size
;
111
MOVTrack
*
tracks
;
112
113
int
flags
;
114
int
rtp_flags
;
115
int
iods_skip
;
116
int
iods_video_profile
;
117
int
iods_audio_profile
;
118
}
MOVMuxContext
;
119
120
#define FF_MOV_FLAG_RTP_HINT 1
121
122
int
ff_mov_write_packet
(
AVFormatContext
*s,
AVPacket
*pkt);
123
124
int
ff_mov_init_hinting
(
AVFormatContext
*s,
int
index
,
int
src_index);
125
int
ff_mov_add_hinted_packet
(
AVFormatContext
*s,
AVPacket
*pkt,
126
int
track_index,
int
sample,
127
uint8_t *sample_data,
int
sample_size);
128
void
ff_mov_close_hinting
(
MOVTrack
*track);
129
130
#endif
/* AVFORMAT_MOVENC_H */
MOVIndex::vosLen
int vosLen
Definition:
movenc.h:85
MOVIndex::rtp_ctx
AVFormatContext * rtp_ctx
the format context for the hinting rtp muxer
Definition:
movenc.h:95
MOVIndex::trackID
int trackID
Definition:
movenc.h:81
HintSample::data
uint8_t * data
Definition:
movenc.h:55
MOVIndex::language
int language
Definition:
movenc.h:80
MOVMuxContext
Definition:
movenc.h:103
MOVIndex::hasKeyframes
int hasKeyframes
Definition:
movenc.h:76
MOVIentry::entries
unsigned int entries
Definition:
movenc.h:47
MOVIndex::src_track
int src_track
the track that this hint track describes
Definition:
movenc.h:94
HintSampleQueue::len
int len
Definition:
movenc.h:64
MOVIndex::sampleSize
long sampleSize
Definition:
movenc.h:75
ff_mov_add_hinted_packet
int ff_mov_add_hinted_packet(AVFormatContext *s, AVPacket *pkt, int track_index, int sample, uint8_t *sample_data, int sample_size)
Definition:
movenchint.c:389
MOVIndex::tref_tag
uint32_t tref_tag
Definition:
movenc.h:90
MOVMuxContext::rtp_flags
int rtp_flags
Definition:
movenc.h:114
MOVIndex::enc
AVCodecContext * enc
Definition:
movenc.h:83
HintSampleQueue
Definition:
movenc.h:62
MOVIentry
struct MOVIentry MOVIentry
AVFormatContext
Format I/O context.
Definition:
avformat.h:863
HintSample::offset
int offset
Definition:
movenc.h:58
MOVMuxContext::av_class
const AVClass * av_class
Definition:
movenc.h:104
MOVMuxContext::mdat_size
uint64_t mdat_size
Definition:
movenc.h:110
MOVMuxContext::chapter_track
int chapter_track
qt chapter track number
Definition:
movenc.h:108
HintSample::own_data
int own_data
Definition:
movenc.h:59
MOVMuxContext::iods_audio_profile
int iods_audio_profile
Definition:
movenc.h:117
MOVMuxContext::mdat_pos
int64_t mdat_pos
Definition:
movenc.h:109
ff_mov_close_hinting
void ff_mov_close_hinting(MOVTrack *track)
Definition:
movenchint.c:447
MOVIentry::size
unsigned int size
Definition:
movenc.h:45
MOVTrack
struct MOVIndex MOVTrack
HintSample::sample_number
int sample_number
Definition:
movenc.h:57
MOVIndex::flags
uint32_t flags
Definition:
movenc.h:79
MOVIentry::flags
uint32_t flags
Definition:
movenc.h:51
MOVIndex::height
int height
active picture (w/o VBI) height for D-10/IMX
Definition:
movenc.h:89
MOVMuxContext
struct MOVMuxContext MOVMuxContext
MOVIndex::timescale
unsigned timescale
Definition:
movenc.h:71
MOVIndex::tag
int tag
stsd fourcc
Definition:
movenc.h:82
HintSampleQueue::samples
HintSample * samples
Definition:
movenc.h:65
MOVIndex::audio_vbr
int audio_vbr
Definition:
movenc.h:88
MOVIndex::hint_track
int hint_track
the track that hints this track, -1 if no hint track is set
Definition:
movenc.h:93
MOVIndex::trackDuration
int64_t trackDuration
Definition:
movenc.h:73
MOVMuxContext::flags
int flags
Definition:
movenc.h:113
MOVMuxContext::iods_skip
int iods_skip
Definition:
movenc.h:115
MOVIentry::pos
uint64_t pos
Definition:
movenc.h:43
MOVIentry::dts
int64_t dts
Definition:
movenc.h:44
ff_mov_init_hinting
int ff_mov_init_hinting(AVFormatContext *s, int index, int src_index)
Definition:
movenchint.c:28
MOVIndex::time
uint64_t time
Definition:
movenc.h:72
MOVIndex::tref_id
int tref_id
trackID of the referenced track
Definition:
movenc.h:91
MOVIndex::max_packet_size
uint32_t max_packet_size
Definition:
movenc.h:98
MOVIndex::cur_rtp_ts_unwrapped
int64_t cur_rtp_ts_unwrapped
Definition:
movenc.h:97
HintSample::size
int size
Definition:
movenc.h:56
MOVMuxContext::iods_video_profile
int iods_video_profile
Definition:
movenc.h:116
MOVIentry::cts
int cts
Definition:
movenc.h:48
AVCodecContext
main external API structure.
Definition:
avcodec.h:1329
AVClass
Describe the class of an AVClass context structure.
Definition:
log.h:33
index
int index
Definition:
gxfenc.c:73
MOVMuxContext::time
int64_t time
Definition:
movenc.h:106
HintSampleQueue::size
int size
Definition:
movenc.h:63
MOVIndex::mode
int mode
Definition:
movenc.h:69
MOVIndex::prev_rtp_ts
uint32_t prev_rtp_ts
Definition:
movenc.h:96
HintSample
Definition:
movenc.h:54
MOVIndex::entry
int entry
Definition:
movenc.h:70
avformat.h
Main libavformat public API header.
ff_mov_write_packet
int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt)
Definition:
movenc.c:2034
MOVIndex::sample_queue
HintSampleQueue sample_queue
Definition:
movenc.h:100
MOVIndex::vosData
uint8_t * vosData
Definition:
movenc.h:86
MOVIndex::sampleCount
long sampleCount
Definition:
movenc.h:74
MOVIndex::cluster
MOVIentry * cluster
Definition:
movenc.h:87
MOVMuxContext::mode
int mode
Definition:
movenc.h:105
MOVIndex
Definition:
movenc.h:68
HintSample
struct HintSample HintSample
MOVIentry
Definition:
movenc.h:42
AVPacket
Definition:
avcodec.h:891
MOVMuxContext::tracks
MOVTrack * tracks
Definition:
movenc.h:111
MOVMuxContext::nb_streams
int nb_streams
Definition:
movenc.h:107
MOVIentry::samplesInChunk
unsigned int samplesInChunk
Definition:
movenc.h:46