Mercurial > libavformat.hg
annotate movenc.h @ 6323:4a52e54b7c12 libavformat
Remove duplicate initialiser for cavsvideo_muxer.extensions
The extensions field was initialised first to "cavs", then to "avs".
The name "cavs" is kept since this is used for the format elsewhere
and "avs" is already used for avisynth files.
author | mru |
---|---|
date | Tue, 27 Jul 2010 08:21:23 +0000 |
parents | b66058698117 |
children |
rev | line source |
---|---|
6011 | 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 FFmpeg. | |
8 * | |
9 * FFmpeg 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 * FFmpeg 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 FFmpeg; 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 | |
6013
332ad5f30c0e
Add initial support for RTP hinting in the mov muxer
mstorsjo
parents:
6012
diff
changeset
|
32 #define RTP_MAX_PACKET_SIZE 1450 |
332ad5f30c0e
Add initial support for RTP hinting in the mov muxer
mstorsjo
parents:
6012
diff
changeset
|
33 |
6011 | 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 // ffmpeg -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 unsigned int size; | |
44 uint64_t pos; | |
45 unsigned int samplesInChunk; | |
46 unsigned int entries; | |
47 int cts; | |
48 int64_t dts; | |
49 #define MOV_SYNC_SAMPLE 0x0001 | |
50 #define MOV_PARTIAL_SYNC_SAMPLE 0x0002 | |
51 uint32_t flags; | |
52 } MOVIentry; | |
53 | |
6014
b66058698117
Use a heuristic for describing the RTP packets using sample data
mstorsjo
parents:
6013
diff
changeset
|
54 typedef struct HintSample { |
b66058698117
Use a heuristic for describing the RTP packets using sample data
mstorsjo
parents:
6013
diff
changeset
|
55 uint8_t *data; |
b66058698117
Use a heuristic for describing the RTP packets using sample data
mstorsjo
parents:
6013
diff
changeset
|
56 int size; |
b66058698117
Use a heuristic for describing the RTP packets using sample data
mstorsjo
parents:
6013
diff
changeset
|
57 int sample_number; |
b66058698117
Use a heuristic for describing the RTP packets using sample data
mstorsjo
parents:
6013
diff
changeset
|
58 int offset; |
b66058698117
Use a heuristic for describing the RTP packets using sample data
mstorsjo
parents:
6013
diff
changeset
|
59 int own_data; |
b66058698117
Use a heuristic for describing the RTP packets using sample data
mstorsjo
parents:
6013
diff
changeset
|
60 } HintSample; |
b66058698117
Use a heuristic for describing the RTP packets using sample data
mstorsjo
parents:
6013
diff
changeset
|
61 |
b66058698117
Use a heuristic for describing the RTP packets using sample data
mstorsjo
parents:
6013
diff
changeset
|
62 typedef struct { |
b66058698117
Use a heuristic for describing the RTP packets using sample data
mstorsjo
parents:
6013
diff
changeset
|
63 int size; |
b66058698117
Use a heuristic for describing the RTP packets using sample data
mstorsjo
parents:
6013
diff
changeset
|
64 int len; |
b66058698117
Use a heuristic for describing the RTP packets using sample data
mstorsjo
parents:
6013
diff
changeset
|
65 HintSample *samples; |
b66058698117
Use a heuristic for describing the RTP packets using sample data
mstorsjo
parents:
6013
diff
changeset
|
66 } HintSampleQueue; |
b66058698117
Use a heuristic for describing the RTP packets using sample data
mstorsjo
parents:
6013
diff
changeset
|
67 |
6011 | 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; ///< stsd fourcc | |
83 AVCodecContext *enc; | |
84 | |
85 int vosLen; | |
86 uint8_t *vosData; | |
87 MOVIentry *cluster; | |
88 int audio_vbr; | |
89 int height; ///< active picture (w/o VBI) height for D-10/IMX | |
90 uint32_t tref_tag; | |
91 int tref_id; ///< trackID of the referenced track | |
6013
332ad5f30c0e
Add initial support for RTP hinting in the mov muxer
mstorsjo
parents:
6012
diff
changeset
|
92 |
332ad5f30c0e
Add initial support for RTP hinting in the mov muxer
mstorsjo
parents:
6012
diff
changeset
|
93 int hint_track; ///< the track that hints this track, -1 if no hint track is set |
332ad5f30c0e
Add initial support for RTP hinting in the mov muxer
mstorsjo
parents:
6012
diff
changeset
|
94 int src_track; ///< the track that this hint track describes |
332ad5f30c0e
Add initial support for RTP hinting in the mov muxer
mstorsjo
parents:
6012
diff
changeset
|
95 AVFormatContext *rtp_ctx; ///< the format context for the hinting rtp muxer |
332ad5f30c0e
Add initial support for RTP hinting in the mov muxer
mstorsjo
parents:
6012
diff
changeset
|
96 uint32_t prev_rtp_ts; |
332ad5f30c0e
Add initial support for RTP hinting in the mov muxer
mstorsjo
parents:
6012
diff
changeset
|
97 int64_t cur_rtp_ts_unwrapped; |
332ad5f30c0e
Add initial support for RTP hinting in the mov muxer
mstorsjo
parents:
6012
diff
changeset
|
98 uint32_t max_packet_size; |
6014
b66058698117
Use a heuristic for describing the RTP packets using sample data
mstorsjo
parents:
6013
diff
changeset
|
99 |
b66058698117
Use a heuristic for describing the RTP packets using sample data
mstorsjo
parents:
6013
diff
changeset
|
100 HintSampleQueue sample_queue; |
6011 | 101 } MOVTrack; |
102 | |
103 typedef struct MOVMuxContext { | |
104 int mode; | |
105 int64_t time; | |
106 int nb_streams; | |
107 int chapter_track; ///< qt chapter track number | |
108 int64_t mdat_pos; | |
109 uint64_t mdat_size; | |
110 MOVTrack *tracks; | |
111 } MOVMuxContext; | |
112 | |
6012 | 113 int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt); |
114 | |
6013
332ad5f30c0e
Add initial support for RTP hinting in the mov muxer
mstorsjo
parents:
6012
diff
changeset
|
115 int ff_mov_init_hinting(AVFormatContext *s, int index, int src_index); |
332ad5f30c0e
Add initial support for RTP hinting in the mov muxer
mstorsjo
parents:
6012
diff
changeset
|
116 int ff_mov_add_hinted_packet(AVFormatContext *s, AVPacket *pkt, |
332ad5f30c0e
Add initial support for RTP hinting in the mov muxer
mstorsjo
parents:
6012
diff
changeset
|
117 int track_index, int sample); |
332ad5f30c0e
Add initial support for RTP hinting in the mov muxer
mstorsjo
parents:
6012
diff
changeset
|
118 void ff_mov_close_hinting(MOVTrack *track); |
332ad5f30c0e
Add initial support for RTP hinting in the mov muxer
mstorsjo
parents:
6012
diff
changeset
|
119 |
6011 | 120 #endif /* AVFORMAT_MOVENC_H */ |