Stefan Kost
fcc3db73a3
flvdemux: merge flvparse into the demuxer and make function static
...
No need to hide certain function in the docs. Allows to do more cleanups.
2010-04-08 14:29:59 +03:00
Mark Nauwelaerts
2d6d2a4d95
flvdemux: remove obsolete reverse playback code path
2010-04-01 10:46:16 +02:00
Mark Nauwelaerts
1c7b1d110b
flvdemux: support (pull mode) negative seek rate
2010-04-01 10:46:12 +02:00
Mark Nauwelaerts
d3ae0ef71f
flvdemux: also check for segment stop for non-segment-seek
2010-04-01 10:46:10 +02:00
Benjamin Otte
3f511ec361
Add -Wwrite-strings to the configure flags
...
... and fix all warnings
2010-03-21 14:17:47 +01:00
Jan Urbański
7d32f46b7a
flvmux: put more information in the metadata
...
Additional tags are: audiocodecid, videocodecid framerate and (in the
non-live case) filesize.
While at it, fix index rewriting to update duration and filesize
values even if the index is empty.
Fixes #613094 .
2010-03-18 10:00:58 +01:00
Jan Urbański
dcb5afd351
flvmux: Put width and height in the metadata
...
Some players use that info to scale their display.
See #613094 .
2010-03-17 09:28:03 +01:00
Jan Urbański
96de71d74b
flvmux: don't put timestamps larger than G_MAXINT32 in the FLV tags
...
For non-live input respond by pushing EOS, for live wrap the
timestamps every G_MAXINT32 miliseconds.
Fixes #613003 .
2010-03-17 09:24:49 +01:00
Jan Urbański
a99ee96172
flvmux: Always put a duration tag in the metadata
...
Some Flash players (for instance JW Player) always expect a duration
tag, otherwise they don't start playback.
If duration can be queried from the sink pads or is provided as a tag,
use it. Otherwise try to determine it from the last seen timestamp of
the sink pads after EOS and rewrite it in the header before writing
the index.
2010-03-16 15:12:46 +01:00
Jan Urbański
ef8f7614ff
flvmux: Remove the send_codec_data field from GstFlvPad
...
That field is not used anymore after the changes in
9fdecbc1c1
.
2010-03-16 15:12:46 +01:00
Jan Urbański
c69c5cb0d7
flvmux: Correctly mark buffers as delta units
...
Mark video interframes, video codec data buffers and audio buffers (if
it's not an audio-only stream) as delta units.
2010-03-15 13:54:39 +01:00
Jan Urbański
9fdecbc1c1
flvmux: Support streamheaders
...
Put the FLV header, the metadata tag and (if present) codec
information in the streamheader to allow the muxer to be used for
streaming.
2010-03-15 13:53:53 +01:00
Jan Urbański
7deee29d2c
flvmux: Preallocate index space and fill it after finishing output
...
Make the index appear at the beginning of the file, which is what most
players are expecting.
Fixes #601236 .
2010-03-15 13:52:03 +01:00
Sebastian Dröge
7c74f7d525
flvmux: Minor coding style fixes and cleanup
2010-03-15 13:47:13 +01:00
Jan Urbański
54a8237d62
flvmux: Add a is-live property
...
If it is set, the muxer will not write the index. Defaults to false.
2010-03-15 13:46:09 +01:00
Jan Urbański
c9bb3edd6f
flvmux: Only put valid seek points in the index
...
For files containing video only video keyframes are valid points to
which a player can seek. For audio-only files any tag start is a valid
seek point.
See #601236 .
2010-03-15 13:45:21 +01:00
Jan Urbański
b21c5c9015
flvmux: Fix index building to make entries point to tag's start offset
...
Previous coding was wrongly incrementing the total byte count before
adding an index entry.
2010-03-15 13:44:14 +01:00
Edward Hervey
6dfcee8fdb
flvdemux: Fix printf formatting for macosx
2010-03-11 17:04:41 +01:00
Edward Hervey
8e0a8b30b8
flvdemux: Fix unitialized variables
2010-03-11 17:04:41 +01:00
Edward Hervey
95d087ed77
flvparse: Make script tag parsing more flexible.
...
* The nb_elements for arrays is just an indication, we can therefore ignore
it and carry on parsing metadata items until we reach the end marker.
* If type == 3, then the script tag contains a list of object followed
by the end marker.
Refactor code slightly to handle both cases
https://bugzilla.gnome.org/show_bug.cgi?id=610447
2010-03-11 17:04:41 +01:00
Mark Nauwelaerts
1dfcc3227c
flvdemux: conduct index scan in task thread
...
... rather than in seeking thread, which might then occupy mainloop
for some time with possible unresponsive side-effects.
2010-03-10 11:48:07 +01:00
Mark Nauwelaerts
f23fb39bc7
flvdemux: avoid indefinite index growth
...
That is, check for and do not add an index entry that has already
been added.
2010-03-10 11:48:07 +01:00
Mark Nauwelaerts
f79de81bb4
flvdemux: also collect index info on-the-fly in pull mode
2010-03-10 11:48:07 +01:00
Mark Nauwelaerts
86a1aec2c0
flvdemux: incrementally build index in pull mode
...
Scan for needed part upon a seek as opposed to doing a complete scan
at startup, which may take some time depending on file and/or platform.
Also accept index metadata in pull mode and peek for some metadata
at the end of the file when deemed appropriate.
2010-03-10 11:48:06 +01:00
Mark Nauwelaerts
66fabd8bfd
flvdemux: some more variable cleanup
2010-03-10 11:48:06 +01:00
Mark Nauwelaerts
122daaf6af
flvdemux: refactor adding index entry
2010-03-10 11:48:06 +01:00
Mark Nauwelaerts
6aa4d5df2d
flvdemux: fix setting DELTA_UNIT flag on outgoing buffers
...
... which should not depend on having index available or not.
Also refactor resulting collapsed code.
2010-03-10 11:48:06 +01:00
Tim-Philipp Müller
8c46cce875
flvdemux: minor micro-optimisation
...
We know these values don't change during the loop, but the compiler
doesn't and has to re-check them for every iteration.
2010-02-19 12:13:08 +00:00
Tim-Philipp Müller
ec9add84a8
flvdemux: remove static keyword from variables that shouldn't be static
...
Multiple flvparse/flvdemux instances should be able to operate without
trampling over each other by accidentally re-using the same (static)
variables. (Spotted by Mark Nauwelaerts)
2010-02-19 12:13:07 +00:00
Edward Hervey
fa0e3184dd
flvdemux: Audio tags without any content are valid.
...
We silently ignore them instead of erroring out.
2010-02-13 18:18:42 +01:00
Edward Hervey
817911664e
flvdemux: Fix GST_CLOCK_DIFF usage.
...
It was previously checking for DIFF(a, b > 6 * GST_SECOND) instead of
the proper DIFF(a,b) > 6 * GST_SECOND
2010-02-13 18:07:50 +01:00
Edward Hervey
d263119589
flvdemux: Don't forget to reset the indexed variable when cleaning up
2010-02-13 16:27:07 +01:00
Edward Hervey
0dd06da5e8
flvdemux: Speedup GstIndex usage
...
Used the _add_associationv variant of GstIndex since we know how many
associations we're adding. Trims up to 50% from index generation time.
Note : It would be great if the index could be generated on the fly or
on request as opposed to being fully created at startup.
2010-02-13 14:57:59 +01:00
Robert Swain
bf9d8dbbdc
flvdemux: Obtain the index from the end of an flv file in push mode
...
Allows for better support of seeking in flv files when in push mode
2010-02-12 16:25:44 +01:00
Wim Taymans
1f9c39da2a
flvparse: fix confusing debug messages
2010-02-12 13:53:58 +01:00
Robert Swain
f9bf5970a3
flvmux: index timestamps should be in seconds, not milliseconds
2010-01-27 20:24:41 +01:00
Jan Urbański
dd82612340
flvmux: properly finish the ECMA array
...
The ECMA array with the file index was missing a mandatory end marker.
Fixes bug #601242 .
2009-11-18 08:03:43 +01:00
Sebastian Dröge
48b784e715
flvdemux: If there's no audio stream after 6 seconds of video signal no-more-pads
...
...and the other way around. Also ignore any audio/video streams that appear
after no-more-pads.
Fixes bug #597091 .
2009-10-03 12:21:34 +02:00
Sebastian Dröge
f84bc538b5
flvdemux: Make sure to only signal no-more-pads a single time
2009-10-03 12:21:34 +02:00
Alessandro Decina
195883b30a
Fix compile warnings with gcc 4.0.1.
2009-09-22 15:04:36 +02:00
Stefan Kost
272683ff36
flvmux: fully use tagsetter to manage the tags. Fixes #563221
...
There is no need to manage a separate taglist.
2009-09-03 14:48:14 +03:00
Jan Schmidt
3f69f8d3ee
flvdemux: Fix tests warning from setting a NULL index
...
Setting a null index in the tests was causing warnings by unreffing
NULL pointers. This is a bug exposed by a recent change in core, it
seems.
2009-08-31 12:10:05 +01:00
Sebastian Dröge
8b9d547c14
flvmux: Fix writing of the index for < 128 buffers
...
Partially fixes bug #590447 .
2009-08-03 20:08:00 +02:00
Sebastian Dröge
cb4eb5714c
flvmux: Fix resetting of the element
...
Reset the have_video/have_audio flags and make sure to
properly release the request pads.
Partially fixes bug #590447 .
2009-08-03 20:07:00 +02:00
Tim-Philipp Müller
93690bfdd6
flvmux: fix invalid write caused by using sizeof("string") as length
...
sizeof("foo") includes the string's NUL-terminator in the size returned,
but we're writing strings here with an explicit size at the beginning
and no NUL-terminator. In most cases using sizeof("foo") as length in
memcpy is not harmful, but it is where the string goes right at the
end of our buffer to write, since we don't allocate space for that
NUL terminator.
2009-07-31 23:54:47 +01:00
Sebastian Dröge
aa02444768
flvdemux: Implement SEEKING query
...
Also add some more query types to the answer of the query type function.
Fixes bug #589424 .
2009-07-23 11:51:07 +02:00
Edward Hervey
32a3d6e717
flvparse: Add missing break in switch/case.
2009-06-25 08:11:09 +02:00
Edward Hervey
67ca4c57b1
flvdemux: Remove unused variable, hint branch likeliness, add comments.
2009-06-25 08:10:38 +02:00
Sebastian Dröge
cf60de4875
flvmux: Get the max duration from upstream if there's no duration tag
2009-05-22 19:41:58 +02:00
Sebastian Dröge
22d95bfc09
flvmux: Write an index table to the end of the file
2009-05-22 19:41:58 +02:00