Commit Graph

96 Commits

Author SHA1 Message Date
Michael Niedermayer
2f9e97b32a Merge commit 'c11e33a3d9665dd1fc5dbdecdd03a4860ac6a622'
* commit 'c11e33a3d9665dd1fc5dbdecdd03a4860ac6a622':
  hls: Set stream offset before opening a chained demuxer

Conflicts:
	libavformat/hls.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-07-29 14:11:21 +02:00
Michael Niedermayer
d31c0fcfa5 Merge commit 'cdd2d73d315ecaf19ff49e64c91923275f1bda68'
* commit 'cdd2d73d315ecaf19ff49e64c91923275f1bda68':
  hls: Don't check discard flags until the parent demuxer's streams actually exist
  hls: Copy the time base from the chained demuxer

Conflicts:
	libavformat/hls.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-07-29 14:04:27 +02:00
Michael Niedermayer
07440c9380 Merge commit 'eb33ba04e03d9f36e23fffd442510c824be709c3'
* commit 'eb33ba04e03d9f36e23fffd442510c824be709c3':
  hls: Return all packets from a previous variant before moving on to the next one

Conflicts:
	libavformat/hls.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-07-29 13:59:27 +02:00
LYF
c110cbf6b5 hls: Create an AVProgram for each variant
Without the information, an application may choose audio from one
variant and video from another variant, which leads to fetching two
variants from the network. This enables av_find_best_stream() to find
matching audio and video streams, so that only one variant is fetched.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-07-29 09:50:09 +03:00
Michael Niedermayer
9d64f23629 hls: Respect the different stream time bases when comparing dts
Also adjust the streams timestamps according to their start
timestamp when comparing. This helps getting correctly interleaved
packets if one stream lacks timestamps (such as a plain ADTS
stream when the other variants are full mpegts) when the others
have timestamps that don't start from zero.

This probably doesn't work properly if such a stream is
temporarily disabled (via the discard flags) and then reenabled,
and such streams are hard to correctly sync against the other
streams as well - but this works better than before at least.

The segment number restriction makes sure all variants advance
roughly at the same pace as well.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-07-29 09:50:08 +03:00
Martin Storsjö
c11e33a3d9 hls: Set stream offset before opening a chained demuxer
This makes sure we don't accidentally check discard flags
for the wrong stream.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-07-29 09:50:06 +03:00
Michael Niedermayer
cdd2d73d31 hls: Don't check discard flags until the parent demuxer's streams actually exist
If passing the end of one segment while initializing the
chained demuxer, the parent demuxer's streams aren't set up
yet, so we can't recheck the discard flags.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-07-29 09:50:05 +03:00
Michael Niedermayer
82bf8c8783 hls: Copy the time base from the chained demuxer
When a variant stream isn't mpegts but e.g. raw adts, the
default time base (90k) isn't correct.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-07-29 09:50:03 +03:00
Martin Storsjö
eb33ba04e0 hls: Return all packets from a previous variant before moving on to the next one
This serves as a safeguard; normally we want to use the dts
comparison to interleave packets from all active variants. If that
dts comparison for some reason doesn't work as intended, make sure
that all packets in all variants for a certain sequence number have
been returned before moving on to the next one.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-07-29 09:50:02 +03:00
Michael Niedermayer
419a3d8a43 avformat/hls: avoid floating point arithmetic
Should make things more reproducable across platforms

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-07-22 19:36:33 +02:00
Zhang Rui
2a5891bb9d avformat/hls: parse EXTINF duration as floating-point number
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-07-22 19:34:47 +02:00
Timothy Gu
a9bbf59be7 cosmetics: Fix "dont" "wont" "doesnt" typos
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-29 02:31:16 +02:00
Reimar Döffinger
efa7f42020 Use the avstring.h locale-independent character type functions
Make sure the behavior does not change with the locale.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-03-07 15:16:36 +02:00
Michael Niedermayer
a12a618aa9 hls: fix timebase
Fixes Ticket1733

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-03-07 13:42:12 +01:00
Reimar Döffinger
88d55b827d Remove incorrect use of ctype.h functions.
As far as I can tell the code should not change behaviour
depending on locale in any of these places.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2013-03-03 21:44:10 +01:00
Reimar Döffinger
db6e2e848b hls: do not access pb->opaque for custom IO.
As the name indicates we can't just assume what the
"opaque" field contains.
This fixes a crash in third-party applications see e.g.:
http://bugzilla.mplayerhq.hu/show_bug.cgi?id=2126

This fixes also FFmpeg trac #2293, which is a different
third-party application.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2013-02-24 19:49:06 +01:00
Michael Niedermayer
665f2d432c hls: add missing checks for accessing avoption fields
Fixes null pointer exception and probably other things

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-23 22:22:53 +01:00
Micah Galizia
d4e5d8d4c2 lavf/hls: broker HTTP options
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
2013-01-23 19:27:14 +01:00
Diego Biurrun
511cf612ac miscellaneous typo fixes 2012-12-21 00:18:34 +01:00
Clément Bœsch
030db0c1dd lavf/hls: whitespace cosmetics after 23db5418. 2012-11-21 08:01:51 +01:00
LYF
23db5418ed hls: create an AVProgram for each variant
Without the information, application may choose audio from one variant
and video from another variant, which leads to fetch two variants from
network. This enables av_find_best_stream() to find matching audio and
video streams, so that only one variant is fetched from network.

Signed-off-by: LYF <yefei.li@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-11-21 01:24:01 +01:00
Michael Niedermayer
395caf3de8 hls: fix integer overflow
Fixes CID717892
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-10-19 23:00:47 +02:00
Duncan Salerno
bd2f8e8f79 Fix second use of AVOptions in HLS
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-10-09 22:12:34 +02:00
Duncan Salerno
5cdd3b995c hls: Disable http seekability probing
Some HLS servers return 403 when the Range header is present. Disabling http
seekability probing prevents the header from being added.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-10-05 05:15:55 +02:00
Michael Niedermayer
3ac754b93b hls: fix min DTS code, try #2
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-08-21 01:52:55 +02:00
Michael Niedermayer
bf606334ad hls: fix EOF check
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-08-21 01:52:55 +02:00
Michael Niedermayer
7123e9506b hls: use av_compare_ts() instead of comparing apples to oranges.
Fixes Ticket983

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-08-21 01:00:05 +02:00
Michael Niedermayer
5e3900c7a5 hls: Initialize stream_offset before find_stream_info.
find stream info causes reads that may use the offset in their callback

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-08-13 20:37:52 +02:00
Michael Niedermayer
cc913f7490 hls: check that the streams have been initialized before checking their discard flags.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-08-13 20:37:04 +02:00
Michael Niedermayer
b5da7d4c1a Merge remote-tracking branch 'qatar/master'
* qatar/master:
  avformat: Drop pointless "format" from container long names
  swscale: bury one more piece of inline asm under HAVE_INLINE_ASM.
  wv: K&R formatting cosmetics
  configure: Add missing descriptions to help output
  h264_ps: declare array of colorspace strings on its own line.
  fate: amix: specify f32 sample format for comparison
  tiny_psnr: support 32-bit float samples
  eamad/eatgq/eatqi: call special EA IDCT directly
  eamad: remove use of MpegEncContext
  mpegvideo: remove unnecessary inclusions of faandct.h
  af_asyncts: avoid overflow in out_size with large delta values
  af_asyncts: add first_pts option

Conflicts:
	configure
	libavcodec/eamad.c
	libavcodec/h264_ps.c
	libavformat/crcenc.c
	libavformat/ffmdec.c
	libavformat/ffmenc.c
	libavformat/framecrcenc.c
	libavformat/md5enc.c
	libavformat/nutdec.c
	libavformat/rawenc.c
	libavformat/yuv4mpeg.c
	tests/tiny_psnr.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-07-30 23:28:31 +02:00
Diego Biurrun
6774247a9d avformat: Drop pointless "format" from container long names 2012-07-30 13:59:06 +02:00
Michael Niedermayer
706bd8ea19 Merge remote-tracking branch 'qatar/master'
* qatar/master: (35 commits)
  h264_idct_10bit: port x86 assembly to cpuflags.
  x86inc: clip num_args to 7 on x86-32.
  x86inc: sync to latest version from x264.
  fft: rename "z" to "zc" to prevent name collision.
  wv: return meaningful error codes.
  wv: return AVERROR_EOF on EOF, not EIO.
  mp3dec: forward errors for av_get_packet().
  mp3dec: remove a pointless local variable.
  mp3dec: remove commented out cruft.
  lavfi: bump minor to mark stabilizing the ABI.
  FATE: add tests for yadif.
  FATE: add a test for delogo video filter.
  FATE: add a test for amix audio filter.
  audiogen: allow specifying random seed as a commandline parameter.
  vc1dec: Override invalid macroblock quantizer
  vc1: avoid reading beyond the last line in vc1_draw_sprites()
  vc1dec: check that coded slice positions and interlacing match.
  vc1dec: Do not ignore ff_vc1_parse_frame_header_adv return value
  configure: Move parts that should not be user-selectable to CONFIG_EXTRA
  lavf: remove commented out cruft in avformat_find_stream_info()
  ...

Conflicts:
	Makefile
	configure
	libavcodec/vc1dec.c
	libavcodec/x86/h264_deblock.asm
	libavcodec/x86/h264_deblock_10bit.asm
	libavcodec/x86/h264dsp_mmx.c
	libavfilter/version.h
	libavformat/mp3dec.c
	libavformat/utils.c
	libavformat/wv.c
	libavutil/x86/x86inc.asm

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-07-29 02:16:26 +02:00
Martin Storsjö
8ebacfb598 hls: Proceed to the next segment at any error code
Previously, we returned any error code except AVERROR_EOF to the
caller - only if AVERROR_EOF or 0 was returned, we proceeded to
the next segment.

With some setups of web servers, using Connection: close in https
and GnuTLS, we don't get a clean error code at the end of segments.
In those cases, just proceed to the next segment.

Tested-by: Antti Seppälä <a.seppala@gmail.com>
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-07-28 01:21:32 +03:00
Michael Niedermayer
6f6182372c hls: replace probsize=0 by noheader flag removial.
This fixes h264 timestamps in hls
Fixes ticket1572

Tested-by: crtmpserver
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-07-26 03:05:31 +02:00
Michael Niedermayer
3005122485 hls: call avformat_find_stream_info()
This is needed to correctly demux h264 in ts

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-07-25 17:40:33 +02:00
Lou Logan
b22ecbc6a5 cosmetics: various spelling fixes
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-07-06 17:08:22 +02:00
Stefano Sabatini
d9355a03f2 lavf/applehttp: add log message in case of applehttp_read_header() failure
Improve error reporting.
2012-06-29 14:50:27 +02:00
Michael Niedermayer
e847f41285 Merge remote-tracking branch 'qatar/master'
* qatar/master:
  libspeexenc: add supported sample rates and channel layouts.
  Replace usleep() calls with av_usleep()
  lavu: add av_usleep() function
  utvideo: mark interlaced frames as such
  utvideo: Fix interlaced prediction for RGB utvideo.
  cosmetics: do not use full path for local headers
  lavu/file: include unistd.h only when available
  configure: check for unistd.h
  log: include unistd.h only when needed
  lavf: include libavutil/time.h instead of redeclaring av_gettime()

Conflicts:
	configure
	doc/APIchanges
	ffmpeg.c
	ffplay.c
	libavcodec/utvideo.c
	libavutil/avutil.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-06-22 22:34:02 +02:00
Mans Rullgard
896bb0d742 Replace usleep() calls with av_usleep()
This reduces the dependency on unistd.h which is not available
on all systems.

Signed-off-by: Mans Rullgard <mans@mansr.com>
2012-06-22 17:15:36 +01:00
Michael Niedermayer
eadd4264ee Merge remote-tracking branch 'qatar/master'
* qatar/master: (36 commits)
  adpcmenc: Use correct frame_size for Yamaha ADPCM.
  avcodec: add ff_samples_to_time_base() convenience function to internal.h
  adx parser: set duration
  mlp parser: set duration instead of frame_size
  gsm parser: set duration
  mpegaudio parser: set duration instead of frame_size
  (e)ac3 parser: set duration instead of frame_size
  flac parser: set duration instead of frame_size
  avcodec: add duration field to AVCodecParserContext
  avutil: add av_rescale_q_rnd() to allow different rounding
  pnmdec: remove useless .pix_fmts
  libmp3lame: support float and s32 sample formats
  libmp3lame: renaming, rearrangement, alignment, and comments
  libmp3lame: use the LAME default bit rate
  libmp3lame: use avpriv_mpegaudio_decode_header() for output frame parsing
  libmp3lame: cosmetics: remove some pointless comments
  libmp3lame: convert some debugging code to av_dlog()
  libmp3lame: remove outdated comment.
  libmp3lame: do not set coded_frame->key_frame.
  libmp3lame: improve error handling in MP3lame_encode_init()
  ...

Conflicts:
	doc/APIchanges
	libavcodec/libmp3lame.c
	libavcodec/pcxenc.c
	libavcodec/pnmdec.c
	libavcodec/pnmenc.c
	libavcodec/sgienc.c
	libavcodec/utils.c
	libavformat/hls.c
	libavutil/avutil.h
	libswscale/x86/swscale_mmx.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-02-21 05:10:12 +01:00
Martin Storsjö
a4f97be1a9 hls: Reset the AVIOContext when seeking
This avoids reading any old data in the AVIOContext buffer after
the seek, and indicates to the mpegts demuxer that we've seeked,
avoiding continuity check errors.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-02-20 11:10:02 +02:00
Panagiotis H.M. Issaris
2b3d041cdc applehttp: Do seeking within segments, too
Enhance seeking by demuxing until the requested timestamp is
reached within the segment selected by the seek code using the
playlist info.

Some mpegts streams don't have dts set for all packets though,
this seeking method doesn't work well for that case.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-02-19 23:03:42 +02:00
Michael Niedermayer
c980be9e3a Merge remote-tracking branch 'qatar/master'
* qatar/master: (21 commits)
  CDXL demuxer and decoder
  hls: Re-add legacy applehttp name to preserve interface compatibility.
  hlsproto: Rename the functions and context
  hlsproto: Encourage users to try the hls demuxer instead of the proto
  doc: Move the hls protocol section into the right place
  libavformat: Rename the applehttp protocol to hls
  hls: Rename the functions and context
  libavformat: Rename the applehttp demuxer to hls
  rtpdec: Support H263 in RFC 2190 format
  rv30: check block type validity
  ttadec: CRC checking
  movenc: Support muxing VC1
  avconv: Don't split out inline sequence headers when stream copying VC1
  rv34: handle size changes during frame multithreading
  rv40: prevent undefined signed overflow in rv40_loop_filter()
  rv34: use AVERROR return values in ff_rv34_decode_frame()
  rv34: use uint16_t for RV34DecContext.deblock_coefs
  librtmp: Add "lib" prefix to librtmp URLProtocol declarations.
  movenc: Use defines instead of hardcoded numbers for RTCP types
  smjpegdec: implement seeking
  ...

Conflicts:
	Changelog
	doc/general.texi
	libavcodec/avcodec.h
	libavcodec/rv30.c
	libavcodec/tta.c
	libavcodec/version.h
	libavformat/Makefile
	libavformat/allformats.c
	libavformat/version.h
	libswscale/x86/swscale_mmx.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-02-15 01:52:14 +01:00
Alex Converse
c1df37e59b hls: Re-add legacy applehttp name to preserve interface compatibility. 2012-02-14 12:13:46 -08:00
Martin Storsjö
65cd7bf32f hls: Rename the functions and context
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-02-14 20:05:32 +02:00
Martin Storsjö
2772258a98 libavformat: Rename the applehttp demuxer to hls
When this demuxer was created, there didn't seem to be any
consensus of a common short name for this protocol. Now
the consensus seems to be to call it hls.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-02-14 20:05:31 +02:00