Commit graph

321 commits

Author SHA1 Message Date
Thiago Santos
42f8e22f17 asfdemux: fix checking for header objects
The if 'and' condition was mixed up with the last parameter of the
function and would lead to wrong results
2017-06-06 21:48:19 -07:00
Sebastian Dröge
66659f07f5 asfdemux: Fix compilation with gcc 7
gstasfdemux.c: In function 'gst_asf_demux_parse_stream_object':
gstasfdemux.c:3001:39: error: '<<' in boolean context, did you mean '<' ? [-Werror=int-in-bool-context]
   is_encrypted = ! !((flags & 0x8000) << 15);
                     ~~~~~~~~~~~~~~~~~~^~~~~~

https://bugzilla.gnome.org/show_bug.cgi?id=779329
2017-02-27 20:55:34 +02:00
Sebastian Dröge
d21017b52a asfdemux: Check that we have enough data available before parsing bool/uint extended content descriptors
https://bugzilla.gnome.org/show_bug.cgi?id=777955
2017-01-31 13:50:21 +02:00
Sebastian Dröge
dec880031d asfdemux: Reset number of languages to 0 when freeing the array because of errors
Otherwise we will happily index into the array at NULL if the requested
index is smaller than the number of languages that were previously
allocated.

https://bugzilla.gnome.org/show_bug.cgi?id=777937
2017-01-30 15:39:59 +02:00
Sebastian Dröge
0ff3f79330 asfdemux: Fix memory leak of payload extensions for unusable/unsupported streams
https://bugzilla.gnome.org/show_bug.cgi?id=775515
2016-12-02 14:06:21 +02:00
Edward Hervey
9ad9e06fcb asfdemux: Allow 64bit sizes for DATA object
we *can* have files greater than 4GB, any other object should be
smaller than that
2016-11-25 12:41:03 +01:00
Edward Hervey
4a52e6c827 asfdemux: Add sanity check for asf_stream_audio
We should have enough bytes for the specified codec_data

https://bugzilla.gnome.org/show_bug.cgi?id=775070
2016-11-25 10:08:31 +01:00
Edward Hervey
8f05e8f449 asfdemux: Add sanity checks when reading asf_stream_video_format
It should report a size of at least 40 bytes
Also check for the size of the remaining data (i.e. codec_data)

https://bugzilla.gnome.org/show_bug.cgi?id=775070
2016-11-25 10:07:21 +01:00
Edward Hervey
97294eb8bb asfdemux: Add check for invalid/corrupt asf object
An asf object can't realistically be bigger than 2**32 bytes.

If it reports a size bigger than that, consider it corrupt and properly
propagate the error back.

https://bugzilla.gnome.org/show_bug.cgi?id=775070
2016-11-25 09:46:12 +01:00
Edward Hervey
48a493070a asfdemux: Handle EOS in push-mode on corrupted files
It is possible no streams were activated when receiving EOS, if so
handled it as if we hadn't seen the header

https://bugzilla.gnome.org/show_bug.cgi?id=774846
2016-11-22 18:21:46 +01:00
Edward Hervey
e7ff86665a asfdemux: FILE headers are mandatory in the header
As per the specification, also avoids ending up trying to play a
file with plenty of un-initialized values.

https://bugzilla.gnome.org/show_bug.cgi?id=774846
2016-11-22 18:21:46 +01:00
Edward Hervey
cc04255e94 asfdemux: Handle incomplete header in pull mode
pulling headers is meant to complete as a whole. If we don't have
enough data, it's an error.

Avoids pipeline hangs on corrupted files

https://bugzilla.gnome.org/show_bug.cgi?id=774846
2016-11-22 18:21:46 +01:00
Edward Hervey
45c7826d76 asfdemux: Handle issues with "empty" files
In some corrupted files, we could end up with no actual streams
being exposed.

In those cases, make sure we properly propagate the failure all
the way to the loop function. This avoids ending up in cases where
we are neither EOS'd nor ERROR'd out from a pipeline point of view.

https://bugzilla.gnome.org/show_bug.cgi?id=774846
2016-11-22 18:21:46 +01:00
Thibault Saunier
3e27368ce3 Use the new API to post flow ERROR messages on the bus
https://bugzilla.gnome.org/show_bug.cgi?id=770158
2016-08-26 19:23:28 -03:00
Carlos Rafael Giani
975f147abe asfdemux: Add byte rate based bitrate tag in case there are no audio props
https://bugzilla.gnome.org/show_bug.cgi?id=769418
2016-08-02 14:41:31 +03:00
Vootele Vesterblom
6ff1c761e4 asfdemux: fix seeking back after EOS has been reached in push mode
Fix seeking when demuxer is in INDEX state. This happens when we
reached the end of the stream. It should still be possible to do
a flushing seek and seek back to any other position though. Instead
the demuxer would just go straight to EOS again instead of going
back to processing packets again from the new position.

https://bugzilla.gnome.org/show_bug.cgi?id=749066
2016-05-27 17:18:32 +01:00
Vineeth TM
eacdaa56b3 ugly: use new gst_element_class_add_static_pad_template()
https://bugzilla.gnome.org/show_bug.cgi?id=763082
2016-03-24 14:38:13 +02:00
Edward Hervey
dba14178ce asfdemux: Don't modify segment values on accurate seeks
When dealing with accurate seeks, we want to return exactly the segment
that was requested by the seek event, and not adjust the values.

https://bugzilla.gnome.org/show_bug.cgi?id=755469
2016-03-08 12:27:36 +01:00
Tim-Philipp Müller
62f5601723 asfdemux: fix adding bitrate to stream tags
https://bugzilla.gnome.org/show_bug.cgi?id=699586
2016-02-22 22:08:12 +00:00
Ravi Kiran K N
9ee60482b2 asfdemux: Support reverse playback
Support reverse playback for ASF format.
Parse packets and queue the payloads, then push
the payload buffer to decoder in reverse order.
Video buffers are pushed from KeyFrame to next
Keyframe.

https://bugzilla.gnome.org/show_bug.cgi?id=757341
2016-01-04 16:13:03 -05:00
Sebastian Dröge
738e48ef49 asfdemux: Don't push any data on pads after the segment.stop
https://bugzilla.gnome.org/show_bug.cgi?id=755469
2015-09-25 23:53:47 +02:00
Sebastian Dröge
155c8fc6a6 asfdemux: Only change segment start to a keyframe for KEYUNIT seeks
Not for accurate seeks, which should accurately start at the requested
position.

https://bugzilla.gnome.org/show_bug.cgi?id=755469
2015-09-25 23:53:47 +02:00
Sebastian Dröge
f501188191 asfdemux: Update segment.position when pushing buffers
Without this, non-flushing seeks are not going to work well.

https://bugzilla.gnome.org/show_bug.cgi?id=755469
2015-09-25 23:53:47 +02:00
Sebastian Dröge
c526153ec9 asfdemux: Only push EOS event if we're not doing a segment seek
https://bugzilla.gnome.org/show_bug.cgi?id=755469
2015-09-25 23:53:47 +02:00
Sebastian Dröge
42d7aec412 asfdemux: If pushing buffers returned EOS, go into the EOS and not failure code path
We don't want to unconditionally send an EOS event downstream, but might want
to send a SEGMENT_DONE message/event instead if a segment seek was done
before.

https://bugzilla.gnome.org/show_bug.cgi?id=755469
2015-09-25 23:53:47 +02:00
Tim-Philipp Müller
b41376aba2 asfdemux: fix file mode of some source files 2015-08-28 19:18:32 +01:00
Vineeth TM
5e7d0a8285 asfdemux: fix assertion error when codec_data is not present in structure
When discovering a particular asf file, caps structure doesn't have
codec_data, and this was not being checked before using the same,
resulting in assertion error

https://bugzilla.gnome.org/show_bug.cgi?id=752803
2015-07-30 13:40:09 +01:00
Luis de Bethencourt
171a1df6eb asfdemux: remove unread value
Init value of idx2 is never used. First usage sets it to idx + 1. Removing
initial value.
2015-07-29 15:56:42 +01:00
Olivier Crête
f2e0276ce4 asfdemux: Don't post error on flushing while reading headers 2015-07-25 14:38:40 -04:00
Jan Schmidt
c72abcf782 asfdemux: Use gst_video_multiview_guess_half_aspect() function
Use gst_video_multiview_guess_half_aspect() to guess if frame-packed
stereoscopic video is full-frame per view or not.
2015-06-19 02:04:38 +10:00
Jan Schmidt
6d0ee6c782 asfdemux: Add support for stereoscopic video metadata.
Add parsing of stereoscopic metadata, and place into the caps to
the decoder.

Fix parsing of Advanced Mutual Exclustion objects.

https://bugzilla.gnome.org/show_bug.cgi?id=711190

Based on a patch by HyeJin Choi <meeshel78@hotmail.com>
2015-06-11 11:01:38 +10:00
Cliff Han
92f5f3f8f3 asfdemux: fix a seek failure due to out-of-range in push mode
A seek in push mode failed for big offsets which are beyond
the range of guint32.

https://bugzilla.gnome.org/show_bug.cgi?id=748162
2015-04-20 09:13:24 +01:00
Mark Nauwelaerts
53642b1073 asfdemux: resurrect some flow return handling
https://bugzilla.gnome.org/show_bug.cgi?id=744572
2015-03-28 18:22:21 +01:00
Sebastian Dröge
7dc03df3de Improve and fix LATENCY query handling
This now follows the design docs everywhere, especially the maximum latency
handling.

https://bugzilla.gnome.org/show_bug.cgi?id=744106
2015-02-11 13:56:48 +01:00
Tim-Philipp Müller
3afe2b7bd1 asfdemux: fix comment 2014-11-05 23:34:56 +00:00
Edward Hervey
ec19c9b6e4 asfdemux: Send duration query upstream first
An upstream element (like mms or some dlna source) might be able to
answer the query. Try that first, else fallback to standard logic
2014-11-05 13:45:29 +01:00
Guillaume Desmottes
07f2043e58 asfdemux: first try to delegate TIME seek events upstream
We should give a chance to upstream to handle TIME seek events before trying
to handle it in asfdemux.

Fix a bug where fast backward seeks where discarded right away because they
were not supported by asfdemux.

https://bugzilla.gnome.org/show_bug.cgi?id=734471
2014-09-16 12:13:41 -03:00
Guillaume Desmottes
8dff7bb38d asfdemux: add ASF_OBJ_METADATA_LIBRARY_OBJECT
We can safely ignore those but best to claim to understand this object type so
we don't raise a warning.

https://bugzilla.gnome.org/show_bug.cgi?id=736060
2014-09-05 10:49:16 +03:00
Thiago Santos
2863d9ae00 asfdemux: if video is h264, check the codec_data for bytestream data
For bytestream we don't want to expose it as codec_data but rather as
streamheader as it is not out-of-band data but data that should be
prepended to the beginning of the stream before the other buffers.

https://bugzilla.gnome.org/show_bug.cgi?id=735070
2014-08-27 10:54:18 -03:00
Thiago Santos
30b8d8a4be asfdemux: simplify log statement
Use the GST_PTR_FORMAT to print the buffer
2014-08-08 16:48:37 -03:00
Thiago Santos
df4a98e510 asfdemux: use GstFlowCombiner
Removes flow return combination code to use the newly added GstFlowCombiner

https://bugzilla.gnome.org/show_bug.cgi?id=709224
2014-06-03 10:04:01 -03:00
Matej Knopp
eb65696251 asfdemux: Handle initial 0 timestamp that should have been -1
https://bugzilla.gnome.org/show_bug.cgi?id=719660
2014-05-26 09:56:11 +02:00
Edward Hervey
fffcbfc127 asfdemux: Fix payloads check
Don't iterate stream->payloads if ... it doesn't exist

CID #1139846
2014-04-03 15:06:22 +02:00
Sebastian Dröge
abb56c3803 asfdemux: Remove unused function 2014-02-09 23:41:36 +01:00
Tim-Philipp Müller
12509f4a80 asfdemux: only add "format" field with fourcc to WMV caps
Doesn't make sense for e.g. H264 or MJPEG.
2014-01-03 16:20:11 +00:00
Thiago Santos
3de558d96b asfdemux: Keep audio error checking fields only for audio
Video shouldn't need to be descrambled, this can cause frames data
to be corrupted

https://bugzilla.gnome.org/show_bug.cgi?id=684942
2013-10-22 16:16:43 -03:00
Thiago Santos
94a183a071 asfdemux: really copy the buffer data
Pass the copy-memory flag to copy the memory for the output buffer,
otherwise we end with 0-sized buffers

https://bugzilla.gnome.org/show_bug.cgi?id=684942
2013-10-22 15:24:04 -03:00
Thiago Santos
556055e2f1 asfdemux: Only use segment.start as seek_time if it is relative
Relying on the gst_segment_do_seek results for getting the
seeking time should not be used if seek type is SET because the
do_seek function makes the 'cur` position of the seek normalized
on the segment range. This means that seeking beyond the end of the
file might not result in instant EOS as it will end up seeking to
the final ts of the file.

In asf seeking to the final timestamp can lead to seeking to the last
keyframe, meaning a few seconds of video will still be played, which should
not be the desired behavior when seeking beyong file limits.
2013-09-24 14:43:34 -07:00
Thiago Santos
abe5ca6d96 asfdemux: Parse last simple index entry
The entry size is fixed at 6, fix typo to finish parsing the index
correctly until the last sample
2013-09-24 14:43:34 -07:00
Matej Knopp
c5312c7105 asfdemux: fix playback regression in push mode 2013-09-18 18:20:00 +02:00