Merge commit '55f03d872640175a00bfa262da4652b7312b905f'
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 3 Oct 2014 19:43:46 +0000 (21:43 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 3 Oct 2014 19:46:40 +0000 (21:46 +0200)
* commit '55f03d872640175a00bfa262da4652b7312b905f':
  hlsenc: Add parameter -hls_allow_cache

Conflicts:
doc/muxers.texi
libavformat/hlsenc.c
libavformat/version.h

See: 3edb9aaea6aaa6b93d708693cfa6454c17e03732
Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
doc/muxers.texi
libavformat/hlsenc.c
libavformat/version.h

diff --cc doc/muxers.texi
index 44931e7307ced8410a3af5b10a985273fd0d76ae,032c0363fe2337186cc498e40939f43861526435..c56330fcee4fee8d4cf9b7e0411476606218656b
@@@ -192,114 -94,33 +192,113 @@@ can not be smaller than one centi secon
  @section hls
  
  Apple HTTP Live Streaming muxer that segments MPEG-TS according to
 -the HTTP Live Streaming specification.
 +the HTTP Live Streaming (HLS) specification.
  
 -It creates a playlist file and numbered segment files. The output
 -filename specifies the playlist filename; the segment filenames
 -receive the same basename as the playlist, a sequential number and
 -a .ts extension.
 +It creates a playlist file, and one or more segment files. The output filename
 +specifies the playlist filename.
  
 +By default, the muxer creates a file for each segment produced. These files
 +have the same name as the playlist, followed by a sequential number and a
 +.ts extension.
 +
 +For example, to convert an input file with @command{ffmpeg}:
  @example
 -avconv -i in.nut out.m3u8
 +ffmpeg -i in.nut out.m3u8
  @end example
 +This example will produce the playlist, @file{out.m3u8}, and segment files:
 +@file{out0.ts}, @file{out1.ts}, @file{out2.ts}, etc.
 +
 +See also the @ref{segment} muxer, which provides a more generic and
 +flexible implementation of a segmenter, and can be used to perform HLS
 +segmentation.
 +
 +@subsection Options
 +
 +This muxer supports the following options:
  
  @table @option
 -@item -hls_time @var{seconds}
 -Set the segment length in seconds.
 -@item -hls_list_size @var{size}
 -Set the maximum number of playlist entries.
 -@item -hls_wrap @var{wrap}
 -Set the number after which index wraps.
 -@item -start_number @var{number}
 -Start the sequence from @var{number}.
 -@item -hls_base_url @var{baseurl}
 +@item hls_time @var{seconds}
 +Set the segment length in seconds. Default value is 2.
 +
 +@item hls_list_size @var{size}
 +Set the maximum number of playlist entries. If set to 0 the list file
 +will contain all the segments. Default value is 5.
 +
 +@item hls_ts_options @var{options_list}
 +Set output format options using a :-separated list of key=value
 +parameters. Values containing @code{:} special characters must be
 +escaped.
 +
 +@item hls_wrap @var{wrap}
 +Set the number after which the segment filename number (the number
 +specified in each segment file) wraps. If set to 0 the number will be
 +never wrapped. Default value is 0.
 +
 +This option is useful to avoid to fill the disk with many segment
 +files, and limits the maximum number of segment files written to disk
 +to @var{wrap}.
 +
 +@item start_number @var{number}
 +Start the playlist sequence number from @var{number}. Default value is
 +0.
 +
 +@item hls_allow_cache @var{allowcache}
- Explicitly set whether the client MAY (1) or MUST NOT (0) cache media
- segments.
++Explicitly set whether the client MAY (1) or MUST NOT (0) cache media segments.
 +
 +@item hls_base_url @var{baseurl}
  Append @var{baseurl} to every entry in the playlist.
  Useful to generate playlists with absolute paths.
 -@item -hls_allow_cache @var{allowcache}
 -Explicitly set whether the client MAY (1) or MUST NOT (0) cache media segments
 +
 +Note that the playlist sequence number must be unique for each segment
 +and it is not to be confused with the segment filename sequence number
 +which can be cyclic, for example if the @option{wrap} option is
 +specified.
 +
 +@item hls_flags single_file
 +If this flag is set, the muxer will store all segments in a single MPEG-TS
 +file, and will use byte ranges in the playlist. HLS playlists generated with
 +this way will have the version number 4.
 +For example:
 +@example
 +ffmpeg -i in.nut -hls_flags single_file out.m3u8
 +@end example
 +Will produce the playlist, @file{out.m3u8}, and a single segment file,
 +@file{out.ts}.
  @end table
  
 +@anchor{ico}
 +@section ico
 +
 +ICO file muxer.
 +
 +Microsoft's icon file format (ICO) has some strict limitations that should be noted:
 +
 +@itemize
 +@item
 +Size cannot exceed 256 pixels in any dimension
 +
 +@item
 +Only BMP and PNG images can be stored
 +
 +@item
 +If a BMP image is used, it must be one of the following pixel formats:
 +@example
 +BMP Bit Depth      FFmpeg Pixel Format
 +1bit               pal8
 +4bit               pal8
 +8bit               pal8
 +16bit              rgb555le
 +24bit              bgr24
 +32bit              bgra
 +@end example
 +
 +@item
 +If a BMP image is used, it must use the BITMAPINFOHEADER DIB header
 +
 +@item
 +If a PNG image is used, it must use the rgba pixel format
 +@end itemize
 +
  @anchor{image2}
  @section image2
  
index 1d70621573e0f9da0a788d3edba91229b1bff616,5d18d13a365e1532233ea66e45d6d8309b1cc86f..b5535727bce95b966ead9abaea66a90dd342f696
@@@ -52,16 -43,11 +52,15 @@@ typedef struct HLSContext 
      int64_t sequence;
      int64_t start_sequence;
      AVOutputFormat *oformat;
 +
      AVFormatContext *avf;
 +
      float time;            // Set by a private option.
 -    int  size;             // Set by a private option.
 +    int max_nb_segments;   // Set by a private option.
      int  wrap;             // Set by a private option.
 -    int  allowcache;
 +    uint32_t flags;        // enum HLSFlags
 +
 +    int allowcache;
      int64_t recording_time;
      int has_video;
      int64_t start_pts;
index 2835f05cabb8ef44c3f8d30ccd890b712424a6c6,bc956d52eabb3c4eeb7cfb6fbf2eefb7de1ac348..be2817e90de69e56ee94f24f6b41165071c7510b
@@@ -30,8 -30,8 +30,8 @@@
  #include "libavutil/version.h"
  
  #define LIBAVFORMAT_VERSION_MAJOR 56
 -#define LIBAVFORMAT_VERSION_MINOR  5
 -#define LIBAVFORMAT_VERSION_MICRO  1
 +#define LIBAVFORMAT_VERSION_MINOR  7
- #define LIBAVFORMAT_VERSION_MICRO 102
++#define LIBAVFORMAT_VERSION_MICRO 103
  
  #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
                                                 LIBAVFORMAT_VERSION_MINOR, \