Mercurial > libavformat.hg
annotate timefilter.h @ 5330:936a03bbd757 libavformat
Suppress ?params in the rtsp uri
Right now rtsp demuxer receives it's ffmpeg specific params encoded in the url
That made the server receiving requests with the url ending with "?udp",
"?multicast" and "?tcp". That may or may not cause problems to servers with
overly strict or overly simple uri parsers
Patch from Armand Bendanan (name.surnameATfreeDOTfr)
author | lu_zero |
---|---|
date | Sat, 24 Oct 2009 15:18:21 +0000 |
parents | aed6cf383ca2 |
children |
rev | line source |
---|---|
4650
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
1 /* |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
2 * Delay Locked Loop based time filter prototypes and declarations |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
3 * Copyright (c) 2009 Samalyse |
4665
aed6cf383ca2
Add my name to copyright & author as requested by the original author.
michael
parents:
4657
diff
changeset
|
4 * Copyright (c) 2009 Michael Niedermayer |
4650
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
5 * Author: Olivier Guilyardi <olivier samalyse com> |
4665
aed6cf383ca2
Add my name to copyright & author as requested by the original author.
michael
parents:
4657
diff
changeset
|
6 * Michael Niedermayer <michaelni gmx at> |
4650
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
7 * |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
8 * This file is part of FFmpeg. |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
9 * |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
10 * FFmpeg is free software; you can redistribute it and/or |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
11 * modify it under the terms of the GNU Lesser General Public |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
12 * License as published by the Free Software Foundation; either |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
13 * version 2.1 of the License, or (at your option) any later version. |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
14 * |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
15 * FFmpeg is distributed in the hope that it will be useful, |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
18 * Lesser General Public License for more details. |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
19 * |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
20 * You should have received a copy of the GNU Lesser General Public |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
21 * License along with FFmpeg; if not, write to the Free Software |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
23 */ |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
24 |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
25 #ifndef AVFORMAT_TIMEFILTER_H |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
26 #define AVFORMAT_TIMEFILTER_H |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
27 |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
28 /** |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
29 * Opaque type representing a time filter state |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
30 * |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
31 * The purpose of this filter is to provide a way to compute accurate time |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
32 * stamps that can be compared to wall clock time, especially when dealing |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
33 * with two clocks: the system clock and a hardware device clock, such as |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
34 * a soundcard. |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
35 */ |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
36 typedef struct TimeFilter TimeFilter; |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
37 |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
38 |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
39 /** |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
40 * Create a new Delay Locked Loop time filter |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
41 * |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
42 * feedback2_factor and feedback3_factor are the factors used for the |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
43 * multiplications that are respectively performed in the second and third |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
44 * feedback paths of the loop. |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
45 * |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
46 * Unless you know what you are doing, you should set these as follow: |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
47 * |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
48 * o = 2 * M_PI * bandwidth * period |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
49 * feedback2_factor = sqrt(2 * o) |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
50 * feedback3_factor = o * o |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
51 * |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
52 * Where bandwidth is up to you to choose. Smaller values will filter out more |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
53 * of the jitter, but also take a longer time for the loop to settle. A good |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
54 * starting point is something between 0.3 and 3 Hz. |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
55 * |
4657
6b24b7aa7351
Add clock_period parameter, this should make the code easier to use.
michael
parents:
4653
diff
changeset
|
56 * @param clock_period period of the hardware clock in seconds |
6b24b7aa7351
Add clock_period parameter, this should make the code easier to use.
michael
parents:
4653
diff
changeset
|
57 * (for example 1.0/44100) |
6b24b7aa7351
Add clock_period parameter, this should make the code easier to use.
michael
parents:
4653
diff
changeset
|
58 * |
4650
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
59 * For more details about these parameters and background concepts please see: |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
60 * http://www.kokkinizita.net/papers/usingdll.pdf |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
61 */ |
4657
6b24b7aa7351
Add clock_period parameter, this should make the code easier to use.
michael
parents:
4653
diff
changeset
|
62 TimeFilter * ff_timefilter_new(double clock_period, double feedback2_factor, double feedback3_factor); |
4650
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
63 |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
64 /** |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
65 * Update the filter |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
66 * |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
67 * This function must be called in real time, at each process cycle. |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
68 * |
4657
6b24b7aa7351
Add clock_period parameter, this should make the code easier to use.
michael
parents:
4653
diff
changeset
|
69 * @param period the device cycle duration in clock_periods. For example, at |
6b24b7aa7351
Add clock_period parameter, this should make the code easier to use.
michael
parents:
4653
diff
changeset
|
70 * 44.1kHz and a buffer size of 512 frames, period = 512 when clock_period |
6b24b7aa7351
Add clock_period parameter, this should make the code easier to use.
michael
parents:
4653
diff
changeset
|
71 * was 1.0/44100, or 512/44100 if clock_period was 1. |
4652 | 72 * |
4650
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
73 * system_time, in seconds, should be the value of the system clock time, |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
74 * at (or as close as possible to) the moment the device hardware interrupt |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
75 * occured (or any other event the device clock raises at the beginning of a |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
76 * cycle). |
4653
34a843f958b7
Merge ff_timefilter_read() and ff_timefilter_update(), this simplifies API and
michael
parents:
4652
diff
changeset
|
77 * |
34a843f958b7
Merge ff_timefilter_read() and ff_timefilter_update(), this simplifies API and
michael
parents:
4652
diff
changeset
|
78 * @return the filtered time, in seconds |
4650
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
79 */ |
4653
34a843f958b7
Merge ff_timefilter_read() and ff_timefilter_update(), this simplifies API and
michael
parents:
4652
diff
changeset
|
80 double ff_timefilter_update(TimeFilter *self, double system_time, double period); |
4650
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
81 |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
82 /** |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
83 * Reset the filter |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
84 * |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
85 * This function should mainly be called in case of XRUN. |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
86 * |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
87 * Warning: after calling this, the filter is in an undetermined state until |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
88 * the next call to ff_timefilter_update() |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
89 */ |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
90 void ff_timefilter_reset(TimeFilter *); |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
91 |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
92 /** |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
93 * Free all resources associated with the filter |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
94 */ |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
95 void ff_timefilter_destroy(TimeFilter *); |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
96 |
5090afc3cd19
Timefilter code by Olivier Guilyardi o list O samalyse o com
michael
parents:
diff
changeset
|
97 #endif /* AVFORMAT_TIMEFILTER_H */ |