Commit Graph
100 Commits
Author SHA1 Message Date
Anssi Hannula a6f5e25ad9 avformat/hls: Fix handling of EXT-X-BYTERANGE streams over 2GB
Replace uses of atoi() with strtoll() when trying to read values into
int64_t variables.

Fixes Kodi trac #16926:
http://trac.kodi.tv/ticket/16926
2016-09-24 09:46:32 +03:00
Anssi Hannula 04964ac311 avformat/hls: Fix missing streams in some cases with MPEG TS
HLS demuxer calls the subdemuxer avformat_find_stream_info() while
overriding the subdemuxer AVFMTCTX_NOHEADER flag by clearing it.
However, this prevents some streams in some MPEG TS streams from being
detected properly.

Simply removing the clearing of the flag would cause the inner
avformat_find_stream_info() call to take longer in some cases, without
a way to control it.

To fix the issue, do not clear the flag but propagate it to HLS demuxer.
To avoid the above-mentioned mandatory delay, the call to
avformat_find_stream_info() is dropped except in the HLS ID3 timestamped
case. The HLS demuxer user should be calling avformat_find_stream_info()
on the HLS demuxer if it wants to find the stream info.

The main streams are now created dynamically after read_header time if
the subdemuxer uses AVFMTCTX_NOHEADER (mpegts).

Subdemuxer avformat_find_stream_info() is still called for the HLS ID3
timestamped case as the HLS demuxer needs to know the packet durations
to properly interleave ID3 timestamped streams with MPEG TS streams on
sub-segment level.

Fixes ticket #4930.
2016-07-28 01:24:57 +03:00
Anssi Hannula 83db3c84fa avformat/hls: Move stream propagation to a separate function
Creation of main demuxer streams from subdemuxer streams is moved to
update_streams_from_subdemuxer() which can be called repeatedly.

There should be no functional changes.
2016-07-28 01:24:57 +03:00
Anssi Hannula 9884f17e34 avformat/hls: Use an array instead of stream offset for stream mapping
This will be useful when the amount of streams per subdemuxer is not
known at hls_read_header time in a following commit.
2016-07-28 01:24:57 +03:00
Anssi Hannula 4d85069e5d avformat/hls: Sync starting segment across variants on live streams
This will avoid a large time difference between variants in the most
common case.
2016-07-28 01:24:57 +03:00
Anssi Hannula 9cb30f7a88 avformat/hls: Fix regression with ranged media segments
Commit 81306fd4bdf ("hls: eliminate ffurl_* usage", merged in d0fc5de3a6)
changed the hls demuxer to use AVIOContext instead of URLContext for its
HTTP requests.

HLS demuxer uses the "offset" option of the http demuxer, requesting
the initial file offset for the I/O (http URLProtocol uses the "Range:"
HTTP header to try to accommodate that).

However, the code in libavformat/aviobuf.c seems to be doing its own
accounting for the current file offset (AVIOContext.pos), with the
assumption that the initial offset is always zero.

HLS demuxer does an explicit seek after open_url to account for cases
where the "offset" was not effective (due to the URL being a local file
or the HTTP server not obeying it), which should be a no-op in case the
file offset is already at that position.

However, since aviobuf.c code thinks the starting offset is 0, this
doesn't work properly.

This breaks retrieval of ranged media segments.

To fix the regression, just drop the seek call from the HLS demuxer when
the HTTP(S) protocol is used.
2016-07-28 01:24:57 +03:00
Anssi Hannula 60873bf992 avformat/utils: Fix find_stream_info not considering the extradata it found
Commit 9200514ad8 ("lavf: replace AVStream.codec with
AVStream.codecpar") merged in commit 6f69f7a8bf changed
avformat_find_stream_info() to put the extradata it got from
st->parser->parser->split() to st->internal->avctx instead of st->codec
(extradata in st->internal->avctx will be later copied to st->codecpar).

However, in the same function, the "is stream ready?" check was changed
to check for extradata in st->codecpar instead of st->codec, even
though st->codecpar is not yet updated at that point.

Extradata retrieved from split() is therefore not considered anymore,
and avformat_find_stream_info() will therefore needlessly continue
probing in some cases.

Fix that by checking for the extradata at st->internal->avctx where it
is actually put.
2016-07-28 01:24:57 +03:00
Anssi Hannula 9099079488 avformat/hls: add support for EXT-X-MAP
Without EXT-X-MAP support we miss the first bytes of some streams.

These streams worked by luck before byte-ranged segment support was added in
da7759b357

Fixes ticket #4797.
2015-10-15 15:04:00 +03:00
Anssi Hannula fd74d45d51 avformat/hls: fix segment selection regression on track changes of live streams
Commit ad701326b4 ("avformat/hls: open playlists immediately when
AVDISCARD_ALL is dropped") inadvertently caused first_packet to never be
cleared, causing select_cur_seq_no() to not use the specific code for
live streams.

In practice this means that when the user selects a different audio
track during live stream (i.e. non-VOD) playback, there may be some
additional delay as the code might select an incorrect segment at first,
and we have to wait for video to catch audio (if too late segment was
selected) or to download more following audio segments (if too early
segment was selected).

Fix that by restoring the zeroing of first_packet.
2015-10-15 15:04:00 +03:00
Anssi Hannula 39b192b8e1 avformat/hls: do not call ffurl_seek/ffurl_size on crypto protocol
ffurl_seek() will not work even when it should be a no-op, so do not
call it on crypto protocol.

Also replace use of ffurl_size() for the same reason.

Reported-by: Michael Schenk <Michael.Schenk@albistechnologies.com>
Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-04-11 00:04:34 +03:00
Anssi Hannula f29cb45bf2 avformat/hls: flush the subdemuxer when seeking
Since we are basically seeking the AVIOContext under the subdemuxer, we
need to flush the subdemuxer to avoid old packets from being read from
the packet queue after the seek.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-04-06 17:55:04 +03:00
Anssi Hannula 9aa0606e87 avformat/hls: properly take stream_index into account when seeking
Properly take stream_index into account so that a keyframe will be
looked for in the specified stream_index only.

Similarly, only check timestamp validity against the specified
stream_index.

Also remove code for stream_index == -1 case which does not actually
happen as it is handled by generic code.

This is based on an initial patch by James Deng.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-04-06 17:55:04 +03:00
Anssi Hannula ad701326b4 avformat/hls: open playlists immediately when AVDISCARD_ALL is dropped
Do not try to delay opening newly required playlists until a segment
switch. Applications expect that newly selected undiscarded streams are
available immediately, especially with alternative rendition streams
(selectable audio/subtitle tracks).

One might think that delaying variant stream switch until a segment
switch would allow a "seamless" switch without us having to download a
specific segment from two different variant playlists. However, that is
not the case, since the application would have to keep the previous
stream available (undiscarded) until the first packet of the newly
selected stream arrives, but by that time the demuxer would have already
downloaded the next segment of both variants.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-04-06 17:55:04 +03:00
Anssi Hannula 05ce529a59 avformat/hls: factor identical playlist allocations out of parse_playlist
Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-04-06 17:55:03 +03:00
Anssi Hannula 6b4b73e75d avformat/hls: do not use sequence numbers for packet ordering
As per spec 3.4.3 ("A client MUST NOT assume that segments with the same
sequence number in different Media Playlists contain matching content.")
we cannot use sequence numbers for packet ordering.

This can be seen e.g. in the subtitle streams of
bipbop_16x9_variant.m3u8 that have considerably longer segments and
therefore different numbering.

Since the code now exclusively syncs using timestamps that may wrap, add
some additional checking for that.

According to the HLS spec all the timestamps should be in 33-bit MPEG
format and synced together.

v2: cleaner wrap detection
v3: further wrap detection improvements

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-04-06 17:55:03 +03:00
Anssi Hannula 8fd6875c83 avformat/hls: do not care about stream start timestamps
While selecting a packet to return to caller in read_packet(), the code
corrects the timestamps for starting timestamps.

However, this is wrong, since for live streams the initial timestamps
might differ just because of the time delay between the retrieval of the
various Media Playlists.

Fortunately, spec 6.2.4 mandates that all variant streams must have
matching timestamps, so we do not need to correct for initial
timestamps.

Drop the correction code.

Note that ID3 timestamps were previously ignored, so this code was
previously actually needed.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-04-06 17:55:03 +03:00
Anssi Hannula d549b0910c avformat/hls: avoid unnecessary segment retrievals
Check if the playlist is still needed just before requesting the next
segment instead of after exhausting the previous segment.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-04-06 17:55:03 +03:00
Anssi Hannula 4e85202bcc avformat/hls: improve segment selection when restarting list reception
Improve selection of the segment sequence number when restarting the
reception of a playlist after it was suspended due to being unneeded
(due to discard flags).

The current code assumes that each playlist contains matching data with
the same sequence number, while spec 3.4.3 specifically says that that
is not the case. Often subtitle playlists also have longer target
durations as well, causing the selection to be completely wrong.

Instead prefer using the playlist segment duration information for
non-live playlists, and other means if that is not possible.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-04-06 17:55:03 +03:00
Anssi Hannula 61e1a70278 avformat/hls: track seeking on a per-playlist basis
Seeking needs to be tracked on a per-playlist basis, since the resyncing
code in hls_read_packet() has to sync each playlist to the seek
timestamp instead of stopping after the first playlist has reached it.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-04-06 17:55:03 +03:00
Anssi Hannula 01b184e68d avformat/hls: parse ID3 timestamps for elementary audio streams
HLS provides MPEG TS timestamps via ID3 tags in the beginning of each
segment of elementary audio streams.

v2: fix issues with streams that have multiple ID3 tags

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-04-06 17:55:03 +03:00
Anssi Hannula 1cb8d986b8 avformat/hls: split read_from_url() out of read_data()
Useful for ID3 parsing.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-04-06 17:55:03 +03:00
Anssi Hannula f7c7fc1369 avformat/hls: add some logging messages
Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-04-06 17:55:02 +03:00
Anssi Hannula da7759b357 avformat/hls: add support for byte-ranged segments
Add support for EXT-X-BYTERANGE added in HLS protocol v4.

v2: Better comment explaining ffurl_seek call and fix cur_seg_offset not
being updated.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-04-06 17:55:02 +03:00
Anssi Hannula cc1162d775 avformat/hls: always return EOF for unneeded playlist streams
Even if we returned AVERROR_EOF previously due to playlist no longer
being needed, we may still be called again, and we do not want to
trigger a segment download in that case.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-04-06 17:55:02 +03:00
Anssi Hannula edf4406c4d avformat/hls: add support for alternative renditions
HLS protocol version 4 added alternative renditions to the
specification (e.g. alternative audio tracks).

The EXT-X-MEDIA tags can also contain metadata for "renditions" (i.e.
tracks) of the main Media Playlist.

Add support for those.

Note that the same rendition (AVStream) may be associated with multiple
variants (AVPrograms).

Alternative subtitle tracks will require additional work and are
therefore not enabled yet.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-04-06 17:55:02 +03:00
Anssi HannulaandLuca Barbato ab76d9f628 http: Always allow no-op seek
This also allows checking stream position as per ffurl_seek() doxy.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-03-11 22:08:57 +01:00
Anssi HannulaandLuca Barbato 2ec33d2712 http: Add support for selecting a request range
Comment from Reimar Döffinger included as pro memoria.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-03-11 22:08:57 +01:00
Anssi Hannula 6275d93d1f MAINTAINERS: add myself for spdif* and hls.c
Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-01-03 15:05:48 +02:00
Anssi Hannula 9371d70bad avformat/hls: decouple playlists from variants
Not all "sub-playlists" are variant playlists (containing the same
content with a different bitrate, etc) in the current version of the HLS
specification. They can now also be alternative renditions, containing
e.g. alternative audio tracks etc.

Decouple playlists from variants to prepare for handling the new
features.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-01-03 15:05:48 +02:00
Anssi Hannula 857841c1b6 avformat/http: always allow no-op seek
This also allows checking stream position as per ffurl_seek() doxy.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2014-01-03 15:05:48 +02:00
Anssi Hannula 7fdf245ab9 avformat/id3v2: allow ID3 parsing without AVFormatContext
Add ff_id3v2_read_dict() for parsing without AVFormatContext, but
instead with AVIOContext and AVDictionary.

AVFormatContext is still used for logging, if available.

Chapter parsing is the only non-logging functionality that actually
needs AVFormatContext, and AFAICS it should be modified to write the
data to ID3v2ExtraMeta first, from where it can be implanted to
AVFormatContext by a separate function (like it is done with
read_apic() and ff_id3v2_parse_apic()). That is outside the scope of
this patch, though.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2013-12-31 05:15:19 +02:00
Anssi Hannula d52882faef avformat/http: allow the caller to select a request range
Add AVOptions for setting the initial offset and the ending offset, so
they can be used for setting an appropriate Range header.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2013-12-31 03:18:53 +02:00
Anssi Hannula 53765ae33b avformat/id3v2: parse ID3 Private frames as extra metadata
They are used in HLS.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2013-12-31 03:18:53 +02:00
Anssi Hannula 4a4437c0fb avformat/mpegts: demux timed ID3 metadata
Used in some HLS streams ("Timed Metadata for HTTP Live Streaming").

This is just ID3 tags at arbitrary stream positions, but I still added
"timed" to the codec name to avoid confusion with regular non-stream ID3
tags.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2013-12-31 03:13:12 +02:00
Anssi HannulaandMichael Niedermayer e10fccf62a avcodec/aacdec: default to non-wide 7.1 in non-strict mode
AAC specification has 7.1(wide) as a default layout for 8-channel
streams (channel config 7). However, at least Nero AAC encoder encodes
non-wide 7.1 streams using the default channel config 7, mapping the
side channels of the original audio stream to the second
AAC_CHANNEL_FRONT pair in the AAC stream. Similarly, e.g. FAAD decodes
the second AAC_CHANNEL_FRONT pair as side channels, therefore decoding
the incorrect streams as if they were correct (and as the encoder
intended).

FFmpeg currently decodes such files by-the-spec, i.e. after decoding the
original front pair will be in AV_CH_FRONT_x_OF_CENTER and the original
side pair will be in AV_CH_FRONT_x.

As actual intended 7.1(wide) streams are very rare while misencoded 7.1
files actually exist in the wild, default to assuming a 7.1 layout was
intended unless in strict mode.

Fixes playback of e.g. 8_Channel_ID.m4a in samples.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-12-18 05:25:01 +01:00
Anssi HannulaandMichael Niedermayer f86387b6c2 lavf/spdifdec: fix demuxing of AAC in IEC 61937
Return value of avpriv_aac_parse_header() is not checked correctly. Fix
it.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-10-29 22:45:27 +01:00
Anssi HannulaandRonald S. Bultje 580bb77936 spdifenc: use special alignment for DTS-HD length_code
Align IEC 61937 length_code for DTS-HD so that
(length_code & 0xf) == 0x8. This is reportedly needed with some
receivers.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-01-05 16:27:07 -08:00
Anssi Hannula ab9c00b992 spdifenc: use special alignment for DTS-HD length_code
Align IEC 61937 length_code for DTS-HD so that
(length_code & 0xf) == 0x8. This is reportedly needed with some
receivers.

Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
2011-10-30 15:43:19 +02:00
Anssi HannulaandReinhard Tartler 7c152a458d lavf: inspect more frames for fps when container time base is coarse
As per issue2629, most 23.976fps matroska H.264 files are incorrectly
detected as 24fps, as the matroska timestamps usually have only
millisecond precision.

Fix that by doubling the amount of timestamps inspected for frame rate
for streams that have coarse time base. This also fixes 29.970 detection
in matroska.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 78431098f9)

Tested with mplayer based on this report
http://thread.gmane.org/gmane.comp.video.mplayer.user/66043/focus=66063

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-04-29 22:46:13 +02:00
Anssi HannulaandMichael Niedermayer 78431098f9 lavf: inspect more frames for fps when container time base is coarse
As per issue2629, most 23.976fps matroska H.264 files are incorrectly
detected as 24fps, as the matroska timestamps usually have only
millisecond precision.

Fix that by doubling the amount of timestamps inspected for frame rate
for streams that have coarse time base. This also fixes 29.970 detection
in matroska.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-04-03 03:18:06 +02:00
Anssi HannulaandMichael Niedermayer b543e1dccf mpegts: add all stream languages into metadata
This is used at least on some older DVB broadcasts for dual-mono audio
tracks.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit 6a7e074eb9)
2011-03-08 02:09:45 +01:00
Anssi HannulaandMichael Niedermayer 70b5906315 mpegtsenc: handle multiple language tags per stream
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit 435cebd015)
2011-03-08 02:09:44 +01:00
Anssi HannulaandMichael Niedermayer c0fd48a702 lavf: document the use of multiple entries in language metadata tag
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit c92562467e)
2011-03-08 02:09:33 +01:00
Anssi HannulaandRonald S. Bultje 6a7e074eb9 mpegts: add all stream languages into metadata
This is used at least on some older DVB broadcasts for dual-mono audio
tracks.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-03-07 15:00:53 -05:00
Anssi HannulaandRonald S. Bultje 435cebd015 mpegtsenc: handle multiple language tags per stream
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-03-07 14:43:03 -05:00
Anssi HannulaandRonald S. Bultje 89e568feec lavf: update documentation of AVOutputFormat.flags
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-03-07 14:34:32 -05:00
Anssi HannulaandRonald S. Bultje c92562467e lavf: document the use of multiple entries in language metadata tag
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-03-07 12:25:36 -05:00
Anssi HannulaandMichael Niedermayer 853daff682 dca: use EXT_AUDIO_ID field to determine core extensions
This avoids the core substream extensions scan when the EXT_AUDIO_ID
field indicates no extensions or only unsupported extensions. The scan
is done only if the value of EXT_AUDIO_ID is unknown or indicates a
present XCh extension which we can decode.

Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 7e06e0ede3)
2011-02-26 03:16:04 +01:00
Anssi HannulaandMans Rullgard 7e06e0ede3 dca: use EXT_AUDIO_ID field to determine core extensions
This avoids the core substream extensions scan when the EXT_AUDIO_ID
field indicates no extensions or only unsupported extensions. The scan
is done only if the value of EXT_AUDIO_ID is unknown or indicates a
present XCh extension which we can decode.

Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-02-24 21:22:37 +00:00
Anssi HannulaandMichael Niedermayer a1c4b65b91 lavf: update documentation of AVOutputFormat.flags
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-02-24 20:00:23 +01:00
Anssi HannulaandMichael Niedermayer 2613c81182 spdifenc: set flag AVFMT_NOTIMESTAMPS
There are no timestamps in IEC 61937.

Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
(cherry picked from commit 6c60fcf89a)
2011-02-18 19:52:25 +01:00
Anssi HannulaandJanne Grunau 6c60fcf89a spdifenc: set flag AVFMT_NOTIMESTAMPS
There are no timestamps in IEC 61937.

Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
2011-02-16 23:59:38 +01:00
Anssi HannulaandMichael Niedermayer d3c4829a0d APIchanges: update for 12c14cd
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 77c330a046)
2011-02-15 16:32:32 +01:00
Anssi HannulaandMichael Niedermayer 932a45a594 mpegtsenc: set audio_type according to st->disposition
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 3f2d3a1904)
2011-02-15 16:32:32 +01:00
Anssi HannulaandMichael Niedermayer e2db6b590f mpegts: set st->disposition according to ISO 639 language descriptor
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 60e7306643)
2011-02-15 16:32:32 +01:00
Anssi HannulaandMichael Niedermayer 2ea7e1f011 lavf: add AV_DISPOSITION_CLEAN_EFFECTS flag
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 24a83bd10a)
2011-02-15 16:32:31 +01:00
Anssi HannulaandMans Rullgard 77c330a046 APIchanges: update for 12c14cd
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-02-14 23:59:27 +00:00
Anssi HannulaandMans Rullgard 3f2d3a1904 mpegtsenc: set audio_type according to st->disposition
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-02-14 23:18:26 +00:00
Anssi HannulaandMans Rullgard 60e7306643 mpegts: set st->disposition according to ISO 639 language descriptor
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-02-14 23:18:26 +00:00
Anssi HannulaandMans Rullgard 24a83bd10a lavf: add AV_DISPOSITION_CLEAN_EFFECTS flag
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-02-14 23:16:32 +00:00
Anssi HannulaandMichael Niedermayer 709946b34c lavf: print stream disposition in dump_stream_format
Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
(cherry picked from commit 3c33c0e263)
2011-02-14 23:58:19 +01:00
Anssi HannulaandMichael Niedermayer af1e8ffdad spdifenc: fix byte order on big-endian systems
There is a check for HAVE_BIGENDIAN when outputting the IEC 61937
stream. On big-endian systems the payload data is not byteswapped,
causing in effect the outputted payload data to be in a different byte
order on big-endian than on little-endian systems.

However, the IEC 61937 preamble (and the final odd byte if present) is
always outputted in the same byte order. This means that on big-endian
systems the headers have a different byte order than the payload,
preventing useful use of the output.

Fix that by outputting the data in a format suitable for sending to an
audio device in S16LE format by default. Output as big-endian (S16BE)
is added as an AVOption. This makes the muxer output the same on all
archs by default.

Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
(cherry picked from commit 57f2c9aed9)
2011-02-14 23:58:19 +01:00
Anssi HannulaandMichael Niedermayer ec0a6889ae spdifenc: IEC 61937 encapsulation of DTS-HD for HDMI
Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
(cherry picked from commit 482d98f69b)
2011-02-14 23:58:19 +01:00
Anssi HannulaandJanne Grunau 3c33c0e263 lavf: print stream disposition in dump_stream_format
Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
2011-02-13 15:21:11 +01:00
Anssi HannulaandJanne Grunau 57f2c9aed9 spdifenc: fix byte order on big-endian systems
There is a check for HAVE_BIGENDIAN when outputting the IEC 61937
stream. On big-endian systems the payload data is not byteswapped,
causing in effect the outputted payload data to be in a different byte
order on big-endian than on little-endian systems.

However, the IEC 61937 preamble (and the final odd byte if present) is
always outputted in the same byte order. This means that on big-endian
systems the headers have a different byte order than the payload,
preventing useful use of the output.

Fix that by outputting the data in a format suitable for sending to an
audio device in S16LE format by default. Output as big-endian (S16BE)
is added as an AVOption. This makes the muxer output the same on all
archs by default.

Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
2011-02-13 15:16:55 +01:00
Anssi HannulaandJanne Grunau 482d98f69b spdifenc: IEC 61937 encapsulation of DTS-HD for HDMI
Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
2011-02-13 15:16:39 +01:00
Anssi HannulaandMichael Niedermayer 070e5ba560 lavf: rename ff_probe_input_buffer to make it public
It is useful for applications that hand input data directly to lavf via
a ByteIOContext.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit 3940caad02)
2011-02-09 03:33:55 +01:00
Anssi HannulaandMichael Niedermayer e74c01db7e lavf: simplify pb parameter of ff_probe_input_buffer
There is no need to pass the ByteIOContext via a pointer to a pointer
anymore.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit aad216fd7e)
2011-02-09 03:33:55 +01:00
Anssi HannulaandMichael Niedermayer 2e47df70c4 lavf: update ff_probe_input_buffer documentation
It never reopens the bytestream anymore.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit 4d016dd4e5)
2011-02-09 03:33:55 +01:00
Anssi HannulaandMichael Niedermayer 5fb06ffac7 configure: check yasm/nasm for working pextrd opcode
NASM versions older than 2.08 fail to build ffmpeg with several
"error: operation size not specified" errors but this is not caught in
configure.

Fix that by checking if "pextrd [eax], xmm0, 1" works in configure.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit 48545a8f72)
2011-02-09 03:30:01 +01:00
Anssi HannulaandRonald S. Bultje 3940caad02 lavf: rename ff_probe_input_buffer to make it public
It is useful for applications that hand input data directly to lavf via
a ByteIOContext.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-02-08 18:25:12 -05:00
Anssi HannulaandRonald S. Bultje aad216fd7e lavf: simplify pb parameter of ff_probe_input_buffer
There is no need to pass the ByteIOContext via a pointer to a pointer
anymore.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-02-08 18:25:11 -05:00
Anssi HannulaandRonald S. Bultje 4d016dd4e5 lavf: update ff_probe_input_buffer documentation
It never reopens the bytestream anymore.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-02-08 18:25:11 -05:00
Anssi HannulaandRonald S. Bultje 48545a8f72 configure: check yasm/nasm for working pextrd opcode
NASM versions older than 2.08 fail to build ffmpeg with several
"error: operation size not specified" errors but this is not caught in
configure.

Fix that by checking if "pextrd [eax], xmm0, 1" works in configure.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-02-06 11:43:35 -05:00
Anssi HannulaandMichael Niedermayer 45eaec3029 h264: add profile names for the existing defines
Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
(cherry picked from commit 71e0bee9ea)
2011-02-02 03:40:50 +01:00
Anssi HannulaandJanne Grunau 71e0bee9ea h264: add profile names for the existing defines
Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
2011-02-01 20:37:02 +01:00
Anssi HannulaandMichael Niedermayer 890b771cc1 libfaac: add recognized profiles array
Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
(cherry picked from commit b92f76e209)
2011-01-23 19:32:07 +01:00
Anssi HannulaandMichael Niedermayer 6345dfcfd0 dca: add profile names
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit f4096bf6ee)
2011-01-23 19:32:07 +01:00
Anssi HannulaandMichael Niedermayer cf9cb1f99a dca: consider a stream with XXCh/X96 in ExSS as DTS-HD HRA
DTS-HD HRA streams do not always have an XBR extension in the extension
substream. Instead they can have only XXCh and X96 extensions in
there and still be considered DTS-HD HRA.

This is also confirmed with Onkyo TX-SR607 receiver which recognizes
such a stream as HiRes Audio.

Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 8f4a5d225c)
2011-01-23 19:32:07 +01:00
Anssi HannulaandJanne Grunau b92f76e209 libfaac: add recognized profiles array
Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
2011-01-22 03:07:32 +01:00
Anssi HannulaandMans Rullgard f4096bf6ee dca: add profile names
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-01-21 23:11:24 +00:00
Anssi HannulaandMans Rullgard 8f4a5d225c dca: consider a stream with XXCh/X96 in ExSS as DTS-HD HRA
DTS-HD HRA streams do not always have an XBR extension in the extension
substream. Instead they can have only XXCh and X96 extensions in
there and still be considered DTS-HD HRA.

This is also confirmed with Onkyo TX-SR607 receiver which recognizes
such a stream as HiRes Audio.

Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-01-21 22:20:20 +00:00
Anssi Hannula ab03382fee Add my GPG fingerprint to MAINTAINERS 2011-01-17 23:51:11 +02:00
Anssi HannulaandCarl Eugen Hoyos 39f4d32908 Fix reading over the end of the allocated buffer.
Patch by Anssi Hannula, anssi d hannula a iki d fi

Originally committed as revision 26291 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-09 23:01:01 +00:00
Anssi HannulaandCarl Eugen Hoyos 2a81f4bde5 Show profile in avcodec_string().
Patch by Anssi Hannula, anssi d hannula a iki d fi

Originally committed as revision 26264 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-08 09:23:25 +00:00
Anssi HannulaandCarl Eugen Hoyos 060ec0a829 Add av_get_profile_name() to get profile names.
Patch by Anssi Hannula, anssi d hannula a iki d fi

Originally committed as revision 26259 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-07 22:27:26 +00:00
Anssi HannulaandCarl Eugen Hoyos f5a2d285f9 Export dca profile information.
Patch by Anssi Hannula anssi d hannula a iki d fi

Originally committed as revision 26250 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-06 22:34:12 +00:00
Anssi HannulaandCarl Eugen Hoyos df1c694c58 Verify FSIZE96 when encountering X96 sync code.
Patch by Anssi Hannula, anssi d hannula a iki d fi

Originally committed as revision 26249 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-06 22:24:39 +00:00
Anssi HannulaandCarl Eugen Hoyos ef2b2243dc Use AVOption for muxers in ffmpeg.
Patch by Anssi Hannula, anssi d hannula d iki d fi

Originally committed as revision 26199 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-02 16:00:47 +00:00
Anssi HannulaandCarl Eugen Hoyos cf99e4aa00 Add AVOption support for muxers.
Patch by Anssi Hannula, anssi d hannula a iki d fi

Originally committed as revision 26195 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-02 10:52:34 +00:00
Anssi HannulaandCarl Eugen Hoyos febd72be65 Use new function put_nbyte() to speed up padding.
Patch by Anssi Hannula, anssi d hannula a iki d fi

Originally committed as revision 26194 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-02 10:46:50 +00:00
Anssi HannulaandCarl Eugen Hoyos 17ee8f669f Add function put_nbyte() to speed up padding in SPDIF muxer.
Patch by Anssi Hannula, anssi d hannula a iki d fi

Originally committed as revision 26193 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-02 10:45:07 +00:00
Anssi HannulaandCarl Eugen Hoyos cc6c0c7b52 Do not add the preamble if the DTS stream is already padded, like DTS in
wav. In that case, DTS can be transmitted through S/PDIF without
the IEC 61937 headers.

Patch by Anssi Hannula, anssi d hannula a iki d fi

Originally committed as revision 26160 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-29 23:42:27 +00:00
Anssi HannulaandCarl Eugen Hoyos d8e481bb86 s/IEC958/IEC 61937 - IEC958 is a lower level format.
Patch by Anssi Hannula, anssi d hannula a iki d fi

Originally committed as revision 26141 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-29 18:48:32 +00:00
Anssi HannulaandCarl Eugen Hoyos 836132ec43 Fix wrong bitstream mode for AC-3.
Noticed by CrystalP from XBMC.

Patch by Anssi Hannula, anssi d hannula a iki d fi

Originally committed as revision 26130 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-29 16:48:40 +00:00
Anssi HannulaandCarl Eugen Hoyos a4c8e0a82b Improve error return values.
Patch by Anssi Hannula, anssi d hannula a iki d fi

Originally committed as revision 26129 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-29 16:42:14 +00:00
Anssi HannulaandCarl Eugen Hoyos 977903521e Always encapsulate DTS in big-endian format, at least some receivers
require that.

Patch by Anssi Hannula, anssi d hannula a iki d fi

Originally committed as revision 26128 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-29 16:34:47 +00:00
Anssi HannulaandCarl Eugen Hoyos e5e932e8b0 Add Anssi and myself to the authors in doxygen.
Patch by Anssi Hannula, anssi d hannula a iki d fi

Originally committed as revision 26127 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-29 16:30:07 +00:00
Anssi HannulaandCarl Eugen Hoyos 323e3f8b6c IEC 61937 encapsulation of TrueHD for HDMI passthrough.
This works at least for some people testing it.

Patch by Anssi Hannula, anssi d hannula a iki fi

Originally committed as revision 25834 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-11-27 18:08:01 +00:00
Anssi HannulaandCarl Eugen Hoyos 3b39e2739f S/PDIF demuxer
Patch by Anssi Hannula, anssi d hannula a iki d fi

Originally committed as revision 25804 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-11-22 22:09:26 +00:00