Mercurial > libavformat.hg
annotate nut.c @ 5061:5ff6a72c9686 libavformat
In mov_read_packet remember the AVStream we want to demux next instead of the
MOVStreamContext. We need the AVStream anyway and it is easier to get the
MOVStreamContext from the AVStream than the other way around.
author | reimar |
---|---|
date | Wed, 24 Jun 2009 08:23:40 +0000 |
parents | a5c615b9d8ec |
children | 6b9c2a6d8fa4 |
rev | line source |
---|---|
2335
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
1 /* |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
2 * nut |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
3 * Copyright (c) 2004-2007 Michael Niedermayer |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
4 * |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
5 * This file is part of FFmpeg. |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
6 * |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
7 * FFmpeg is free software; you can redistribute it and/or |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
8 * modify it under the terms of the GNU Lesser General Public |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
9 * License as published by the Free Software Foundation; either |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
10 * version 2.1 of the License, or (at your option) any later version. |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
11 * |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
12 * FFmpeg is distributed in the hope that it will be useful, |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
15 * Lesser General Public License for more details. |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
16 * |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
17 * You should have received a copy of the GNU Lesser General Public |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
18 * License along with FFmpeg; if not, write to the Free Software |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
20 */ |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
21 |
3286 | 22 #include "libavutil/tree.h" |
2335
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
23 #include "nut.h" |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
24 |
3112 | 25 const AVCodecTag ff_nut_subtitle_tags[] = { |
26 { CODEC_ID_TEXT , MKTAG('U', 'T', 'F', '8') }, | |
27 { CODEC_ID_SSA , MKTAG('S', 'S', 'A', 0 ) }, | |
28 { CODEC_ID_DVD_SUBTITLE, MKTAG('D', 'V', 'D', 'S') }, | |
29 { CODEC_ID_DVB_SUBTITLE, MKTAG('D', 'V', 'B', 'S') }, | |
30 { CODEC_ID_NONE , 0 } | |
31 }; | |
32 | |
2335
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
33 void ff_nut_reset_ts(NUTContext *nut, AVRational time_base, int64_t val){ |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
34 int i; |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
35 for(i=0; i<nut->avf->nb_streams; i++){ |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
36 nut->stream[i].last_pts= av_rescale_rnd( |
3011
0439b354e005
ff_nut_reset_ts() expected to get 'ts*time_base_count', but muxer only
ods15
parents:
2890
diff
changeset
|
37 val, |
2335
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
38 time_base.num * (int64_t)nut->stream[i].time_base->den, |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
39 time_base.den * (int64_t)nut->stream[i].time_base->num, |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
40 AV_ROUND_DOWN); |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
41 } |
5b5e1edd462e
move syncpoint timestamp resetting code to a common file
michael
parents:
diff
changeset
|
42 } |
2338 | 43 |
44 int64_t ff_lsb2full(StreamContext *stream, int64_t lsb){ | |
45 int64_t mask = (1<<stream->msb_pts_shift)-1; | |
46 int64_t delta= stream->last_pts - mask/2; | |
47 return ((lsb - delta)&mask) + delta; | |
48 } | |
49 | |
4076 | 50 int ff_nut_sp_pos_cmp(Syncpoint *a, Syncpoint *b){ |
2704
5ab595d4eb2f
Add some parentheses to clarify operator precedence, fixes the warnings:
diego
parents:
2683
diff
changeset
|
51 return ((a->pos - b->pos) >> 32) - ((b->pos - a->pos) >> 32); |
2349 | 52 } |
53 | |
4076 | 54 int ff_nut_sp_pts_cmp(Syncpoint *a, Syncpoint *b){ |
2704
5ab595d4eb2f
Add some parentheses to clarify operator precedence, fixes the warnings:
diego
parents:
2683
diff
changeset
|
55 return ((a->ts - b->ts) >> 32) - ((b->ts - a->ts) >> 32); |
2349 | 56 } |
57 | |
58 void ff_nut_add_sp(NUTContext *nut, int64_t pos, int64_t back_ptr, int64_t ts){ | |
4076 | 59 Syncpoint *sp= av_mallocz(sizeof(Syncpoint)); |
2890
31199df992f8
Move *malloc() out of tree.c, that way the code can be used with
michael
parents:
2704
diff
changeset
|
60 struct AVTreeNode *node= av_mallocz(av_tree_node_size); |
2349 | 61 |
62 sp->pos= pos; | |
63 sp->back_ptr= back_ptr; | |
64 sp->ts= ts; | |
2890
31199df992f8
Move *malloc() out of tree.c, that way the code can be used with
michael
parents:
2704
diff
changeset
|
65 av_tree_insert(&nut->syncpoints, sp, ff_nut_sp_pos_cmp, &node); |
31199df992f8
Move *malloc() out of tree.c, that way the code can be used with
michael
parents:
2704
diff
changeset
|
66 if(node){ |
2349 | 67 av_free(sp); |
2890
31199df992f8
Move *malloc() out of tree.c, that way the code can be used with
michael
parents:
2704
diff
changeset
|
68 av_free(node); |
31199df992f8
Move *malloc() out of tree.c, that way the code can be used with
michael
parents:
2704
diff
changeset
|
69 } |
2349 | 70 } |
3120
ea5623a8efde
Add 'disposition' bitfield to AVStream and use it for both muxing and demuxing
eugeni
parents:
3112
diff
changeset
|
71 |
ea5623a8efde
Add 'disposition' bitfield to AVStream and use it for both muxing and demuxing
eugeni
parents:
3112
diff
changeset
|
72 const Dispositions ff_nut_dispositions[] = { |
ea5623a8efde
Add 'disposition' bitfield to AVStream and use it for both muxing and demuxing
eugeni
parents:
3112
diff
changeset
|
73 {"default" , AV_DISPOSITION_DEFAULT}, |
ea5623a8efde
Add 'disposition' bitfield to AVStream and use it for both muxing and demuxing
eugeni
parents:
3112
diff
changeset
|
74 {"dub" , AV_DISPOSITION_DUB}, |
ea5623a8efde
Add 'disposition' bitfield to AVStream and use it for both muxing and demuxing
eugeni
parents:
3112
diff
changeset
|
75 {"original" , AV_DISPOSITION_ORIGINAL}, |
ea5623a8efde
Add 'disposition' bitfield to AVStream and use it for both muxing and demuxing
eugeni
parents:
3112
diff
changeset
|
76 {"comment" , AV_DISPOSITION_COMMENT}, |
ea5623a8efde
Add 'disposition' bitfield to AVStream and use it for both muxing and demuxing
eugeni
parents:
3112
diff
changeset
|
77 {"lyrics" , AV_DISPOSITION_LYRICS}, |
ea5623a8efde
Add 'disposition' bitfield to AVStream and use it for both muxing and demuxing
eugeni
parents:
3112
diff
changeset
|
78 {"karaoke" , AV_DISPOSITION_KARAOKE}, |
ea5623a8efde
Add 'disposition' bitfield to AVStream and use it for both muxing and demuxing
eugeni
parents:
3112
diff
changeset
|
79 {"" , 0} |
ea5623a8efde
Add 'disposition' bitfield to AVStream and use it for both muxing and demuxing
eugeni
parents:
3112
diff
changeset
|
80 }; |
ea5623a8efde
Add 'disposition' bitfield to AVStream and use it for both muxing and demuxing
eugeni
parents:
3112
diff
changeset
|
81 |