Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 17 Jul 2012 23:27:19 +0000 (01:27 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 17 Jul 2012 23:27:19 +0000 (01:27 +0200)
* qatar/master:
  libopenjpeg: introduce encoding support
  libopenjpeg: rename decoder source file.
  RTMPTS protocol support
  RTMPS protocol support
  avconv: print an error message when demuxing fails.
  tscc2: DCT output should not be clipped
  rtmp: Rename rtmphttp to ffrtmphttp

Conflicts:
Changelog
configure
doc/general.texi
libavcodec/libopenjpegenc.c
libavcodec/version.h
libavformat/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
14 files changed:
1  2 
Changelog
configure
doc/general.texi
doc/protocols.texi
ffmpeg.c
libavcodec/libopenjpegenc.c
libavcodec/tscc2.c
libavcodec/version.h
libavformat/Makefile
libavformat/allformats.c
libavformat/rtmp.h
libavformat/rtmphttp.c
libavformat/rtmpproto.c
libavformat/version.h

diff --cc Changelog
+++ b/Changelog
@@@ -19,108 -35,32 +19,110 @@@ version next
  - TechSmith Screen Codec 2 decoder
  - AAC encoding via libfdk-aac
  - Microsoft Expression Encoder Screen decoder
 -- JPEG 2000 encoding support through OpenJPEG
+ - RTMPS protocol support
+ - RTMPTS protocol support
 +- showwaves filter
 +- LucasArts SMUSH playback support
 +- SAMI demuxer and decoder
 +- RealText demuxer and decoder
 +- Heart Of Darkness PAF playback support
 +- iec61883 device
 +- asettb filter
 +- new option: -progress
 +- 3GPP Timed Text decoder
 +- GeoTIFF decoder support
 +
 +
 +version 0.11:
 +
 +- Fixes: CVE-2012-2772, CVE-2012-2774, CVE-2012-2775, CVE-2012-2776, CVE-2012-2777,
 +         CVE-2012-2779, CVE-2012-2782, CVE-2012-2783, CVE-2012-2784, CVE-2012-2785,
 +         CVE-2012-2786, CVE-2012-2787, CVE-2012-2788, CVE-2012-2789, CVE-2012-2790,
 +         CVE-2012-2791, CVE-2012-2792, CVE-2012-2793, CVE-2012-2794, CVE-2012-2795,
 +         CVE-2012-2796, CVE-2012-2797, CVE-2012-2798, CVE-2012-2799, CVE-2012-2800,
 +         CVE-2012-2801, CVE-2012-2802, CVE-2012-2803, CVE-2012-2804,
 +- v408 Quicktime and Microsoft AYUV Uncompressed 4:4:4:4 encoder and decoder
 +- setfield filter
 +- CDXL demuxer and decoder
 +- Apple ProRes encoder
 +- ffprobe -count_packets and -count_frames options
 +- Sun Rasterfile Encoder
 +- ID3v2 attached pictures reading and writing
 +- WMA Lossless decoder
 +- bluray protocol
 +- blackdetect filter
 +- libutvideo encoder wrapper (--enable-libutvideo)
 +- swapuv filter
 +- bbox filter
 +- XBM encoder and decoder
 +- RealAudio Lossless decoder
 +- ZeroCodec decoder
 +- tile video filter
 +- Metal Gear Solid: The Twin Snakes demuxer
 +- OpenEXR image decoder
 +- removelogo filter
 +- drop support for ffmpeg without libavfilter
 +- drawtext video filter: fontconfig support
 +- ffmpeg -benchmark_all option
 +- super2xsai filter ported from libmpcodecs
 +- add libavresample audio conversion library for compatibility
 +- MicroDVD decoder
 +- Avid Meridien (AVUI) encoder and decoder
 +- accept + prefix to -pix_fmt option to disable automatic conversions.
 +- complete audio filtering in libavfilter and ffmpeg
 +- add fps filter
 +- vorbis parser
 +- png parser
 +- audio mix filter
  
  
 -version 0.8:
 +version 0.10:
  
 +- Fixes: CVE-2011-3929, CVE-2011-3934, CVE-2011-3935, CVE-2011-3936,
 +         CVE-2011-3937, CVE-2011-3940, CVE-2011-3941, CVE-2011-3944,
 +         CVE-2011-3945, CVE-2011-3946, CVE-2011-3947, CVE-2011-3949,
 +         CVE-2011-3950, CVE-2011-3951, CVE-2011-3952
 +- v410 Quicktime Uncompressed 4:4:4 10-bit encoder and decoder
 +- SBaGen (SBG) binaural beats script demuxer
 +- OpenMG Audio muxer
 +- Timecode extraction in DV and MOV
 +- thumbnail video filter
 +- XML output in ffprobe
 +- asplit audio filter
 +- tinterlace video filter
 +- astreamsync audio filter
 +- amerge audio filter
 +- ISMV (Smooth Streaming) muxer
  - GSM audio parser
  - SMJPEG muxer
 -
 -
 -version 0.8_beta2:
 -
 +- XWD encoder and decoder
  - Automatic thread count based on detection number of (available) CPU cores
 -- Deprecate libpostproc. If desired, the switch --enable-postproc will
 -  enable it but it may be removed in a later Libav release.
 +- y41p Brooktree Uncompressed 4:1:1 12-bit encoder and decoder
 +- ffprobe -show_error option
 +- Avid 1:1 10-bit RGB Packer codec
 +- v308 Quicktime Uncompressed 4:4:4 encoder and decoder
 +- yuv4 libquicktime packed 4:2:0 encoder and decoder
 +- ffprobe -show_frames option
 +- silencedetect audio filter
 +- ffprobe -show_program_version, -show_library_versions, -show_versions options
  - rv34: frame-level multi-threading
  - optimized iMDCT transform on x86 using SSE for for mpegaudiodec
 +- Improved PGS subtitle decoder
 +- dumpgraph option to lavfi device
 +- r210 and r10k encoders
 +- ffwavesynth decoder
 +- aviocat tool
 +- ffeval tool
  
  
 -version 0.8_beta1:
 +version 0.9:
  
 +- openal input device added
 +- boxblur filter added
  - BWF muxer
  - Flash Screen Video 2 decoder
 -- ffplay/ffprobe/ffserver renamed to avplay/avprobe/avserver
 -- ffmpeg deprecated, added avconv, which is almost the same for now, except
 +- lavfi input device added
 +- added avconv, which is almost the same for now, except
  for a few incompatible changes in the options, which will hopefully make them
  easier to use. The changes are:
      * The options placement is now strictly enforced! While in theory the
diff --cc configure
+++ b/configure
@@@ -1711,7 -1527,8 +1711,9 @@@ vfwcap_indev_extralibs="-lavicap32
  x11_grab_device_indev_deps="x11grab XShmCreateImage"
  
  # protocols
 +bluray_protocol_deps="libbluray"
+ ffrtmphttp_protocol_deps="!librtmp_protocol"
+ ffrtmphttp_protocol_select="http_protocol"
  gopher_protocol_deps="network"
  httpproxy_protocol_deps="network"
  httpproxy_protocol_select="tcp_protocol"
Simple merge
@@@ -271,12 -241,19 +271,19 @@@ URL of the target stream
  
  @end table
  
 -For example to read with @command{avplay} a multimedia resource named
 +For example to read with @command{ffplay} a multimedia resource named
  "sample" from the application "vod" from an RTMP server "myserver":
  @example
 -avplay rtmp://myserver/vod/sample
 +ffplay rtmp://myserver/vod/sample
  @end example
  
+ @section rtmps
+ Real-Time Messaging Protocol over a secure SSL connection.
+ The Real-Time Messaging Protocol (RTMPS) is used for streaming
+ multimedia content across an encrypted connection.
  @section rtmpt
  
  Real-Time Messaging Protocol tunneled through HTTP.
diff --cc ffmpeg.c
Simple merge
  * JPEG 2000 encoder using libopenjpeg
  */
  
+ #define  OPJ_STATIC
+ #include <openjpeg.h>
  #include "libavutil/opt.h"
  #include "libavutil/imgutils.h"
 -#include "libavutil/intreadwrite.h"
 +#include "libavutil/avassert.h"
  #include "avcodec.h"
 +#include "libavutil/intreadwrite.h"
  #include "internal.h"
- #define  OPJ_STATIC
- #include <openjpeg.h>
  
  typedef struct {
      AVClass *avclass;
@@@ -57,12 -57,19 +58,17 @@@ static void error_callback(const char *
  
  static void warning_callback(const char *msg, void *data)
  {
-     av_log((AVCodecContext*)data, AV_LOG_WARNING, "libopenjpeg: %s\n", msg);
+     av_log(data, AV_LOG_WARNING, "%s\n", msg);
+ }
+ static void info_callback(const char *msg, void *data)
+ {
+     av_log(data, AV_LOG_DEBUG, "%s\n", msg);
  }
  
 -static opj_image_t *libopenjpeg_create_image(AVCodecContext *avctx,
 -                                             opj_cparameters_t *parameters)
 +static opj_image_t *mj2_create_image(AVCodecContext *avctx, opj_cparameters_t *parameters)
  {
      opj_image_cmptparm_t *cmptparm;
 -    OPJ_COLOR_SPACE color_space;
      opj_image_t *img;
      int i;
      int sub_dx[4];
  static av_cold int libopenjpeg_encode_init(AVCodecContext *avctx)
  {
      LibOpenJPEGContext *ctx = avctx->priv_data;
+     int err = AVERROR(ENOMEM);
  
      opj_set_default_encoder_parameters(&ctx->enc_params);
 -    ctx->enc_params.cp_rsiz          = ctx->profile;
 -    ctx->enc_params.mode             = !!avctx->global_quality;
 -    ctx->enc_params.cp_cinema        = ctx->cinema_mode;
 -    ctx->enc_params.prog_order       = ctx->prog_order;
 -    ctx->enc_params.numresolution    = ctx->numresolution;
 -    ctx->enc_params.cp_disto_alloc   = ctx->disto_alloc;
 -    ctx->enc_params.cp_fixed_alloc   = ctx->fixed_alloc;
 +    ctx->enc_params.cp_rsiz = ctx->profile;
 +    ctx->enc_params.mode = !!avctx->global_quality;
 +    ctx->enc_params.cp_cinema = ctx->cinema_mode;
 +    ctx->enc_params.prog_order = ctx->prog_order;
 +    ctx->enc_params.numresolution = ctx->numresolution;
 +    ctx->enc_params.cp_disto_alloc = ctx->disto_alloc;
 +    ctx->enc_params.cp_fixed_alloc = ctx->fixed_alloc;
      ctx->enc_params.cp_fixed_quality = ctx->fixed_quality;
 -    ctx->enc_params.tcp_numlayers    = ctx->numlayers;
 -    ctx->enc_params.tcp_rates[0]     = FFMAX(avctx->compression_level, 0) * 2;
 +    ctx->enc_params.tcp_numlayers = ctx->numlayers;
 +    ctx->enc_params.tcp_rates[0] = FFMAX(avctx->compression_level, 0) * 2;
  
      ctx->compress = opj_create_compress(ctx->format);
      if (!ctx->compress) {
  
      avctx->coded_frame = avcodec_alloc_frame();
      if (!avctx->coded_frame) {
-         av_freep(&ctx->compress);
          av_log(avctx, AV_LOG_ERROR, "Error allocating coded frame\n");
-         return AVERROR(ENOMEM);
+         goto fail;
      }
  
 -    ctx->image = libopenjpeg_create_image(avctx, &ctx->enc_params);
 +    ctx->image = mj2_create_image(avctx, &ctx->enc_params);
      if (!ctx->image) {
-         av_freep(&ctx->compress);
-         av_freep(&avctx->coded_frame);
          av_log(avctx, AV_LOG_ERROR, "Error creating the mj2 image\n");
-         return AVERROR(EINVAL);
+         err = AVERROR(EINVAL);
+         goto fail;
      }
  
 -    ctx->event_mgr.error_handler   = error_callback;
 +    memset(&ctx->event_mgr, 0, sizeof(opj_event_mgr_t));
+     ctx->event_mgr.info_handler    = info_callback;
 +    ctx->event_mgr.error_handler = error_callback;
      ctx->event_mgr.warning_handler = warning_callback;
-     ctx->event_mgr.info_handler = NULL;
      opj_set_event_mgr((opj_common_ptr)ctx->compress, &ctx->event_mgr, avctx);
  
      return 0;
+ fail:
+     av_freep(&ctx->compress);
+     av_freep(&avctx->coded_frame);
+     return err;
  }
  
 -static void libopenjpeg_copy_packed8(AVCodecContext *avctx,
 -                                     const AVFrame *frame, opj_image_t *image)
 +static int libopenjpeg_copy_packed8(AVCodecContext *avctx, const AVFrame *frame, opj_image_t *image)
  {
      int compno;
 -    int x, y;
 -    int image_index, frame_index;
 +    int x;
 +    int y;
 +    int image_index;
 +    int frame_index;
      const int numcomps = image->numcomps;
  
      for (compno = 0; compno < numcomps; ++compno) {
@@@ -370,19 -330,16 +383,22 @@@ static int libopenjpeg_encode_frame(AVC
      case PIX_FMT_YUV444P16:
      case PIX_FMT_YUV422P16:
      case PIX_FMT_YUV420P16:
 -        libopenjpeg_copy_unpacked16(avctx, frame, image);
 +        cpyresult = libopenjpeg_copy_unpacked16(avctx, frame, image);
          break;
      default:
-         av_log(avctx, AV_LOG_ERROR, "The frame's pixel format '%s' is not supported\n", av_get_pix_fmt_name(avctx->pix_fmt));
+         av_log(avctx, AV_LOG_ERROR,
+                "The frame's pixel format '%s' is not supported\n",
+                av_get_pix_fmt_name(avctx->pix_fmt));
          return AVERROR(EINVAL);
          break;
      }
  
-         av_log(avctx, AV_LOG_ERROR, "Could not copy the frame data to the internal image buffer\n");
 +    if (!cpyresult) {
++        av_log(avctx, AV_LOG_ERROR,
++               "Could not copy the frame data to the internal image buffer\n");
 +        return -1;
 +    }
 +
      opj_setup_encoder(compress, &ctx->enc_params, image);
      stream = opj_cio_open((opj_common_ptr)compress, NULL, 0);
      if (!stream) {
Simple merge
@@@ -27,8 -27,8 +27,8 @@@
   */
  
  #define LIBAVCODEC_VERSION_MAJOR 54
- #define LIBAVCODEC_VERSION_MINOR  40
 -#define LIBAVCODEC_VERSION_MINOR 22
 -#define LIBAVCODEC_VERSION_MICRO  0
++#define LIBAVCODEC_VERSION_MINOR  41
 +#define LIBAVCODEC_VERSION_MICRO 100
  
  #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
                                                 LIBAVCODEC_VERSION_MINOR, \
@@@ -369,10 -338,9 +369,11 @@@ OBJS-$(CONFIG_LIBRTMP
  
  # protocols I/O
  OBJS-$(CONFIG_APPLEHTTP_PROTOCOL)        += hlsproto.o
 +OBJS-$(CONFIG_BLURAY_PROTOCOL)           += bluray.o
 +OBJS-$(CONFIG_CACHE_PROTOCOL)            += cache.o
  OBJS-$(CONFIG_CONCAT_PROTOCOL)           += concat.o
  OBJS-$(CONFIG_CRYPTO_PROTOCOL)           += crypto.o
+ OBJS-$(CONFIG_FFRTMPHTTP_PROTOCOL)       += rtmphttp.o
  OBJS-$(CONFIG_FILE_PROTOCOL)             += file.o
  OBJS-$(CONFIG_GOPHER_PROTOCOL)           += gopher.o
  OBJS-$(CONFIG_HLS_PROTOCOL)              += hlsproto.o
@@@ -268,10 -244,9 +268,11 @@@ void av_register_all(void
  #if FF_API_APPLEHTTP_PROTO
      REGISTER_PROTOCOL (APPLEHTTP, applehttp);
  #endif
 +    REGISTER_PROTOCOL (BLURAY, bluray);
 +    REGISTER_PROTOCOL (CACHE, cache);
      REGISTER_PROTOCOL (CONCAT, concat);
      REGISTER_PROTOCOL (CRYPTO, crypto);
+     REGISTER_PROTOCOL (FFRTMPHTTP, ffrtmphttp);
      REGISTER_PROTOCOL (FILE, file);
      REGISTER_PROTOCOL (GOPHER, gopher);
      REGISTER_PROTOCOL (HLS, hls);
Simple merge
Simple merge
Simple merge
@@@ -30,8 -30,8 +30,8 @@@
  #include "libavutil/avutil.h"
  
  #define LIBAVFORMAT_VERSION_MAJOR 54
- #define LIBAVFORMAT_VERSION_MINOR 16
- #define LIBAVFORMAT_VERSION_MICRO 104
 -#define LIBAVFORMAT_VERSION_MINOR  9
 -#define LIBAVFORMAT_VERSION_MICRO  0
++#define LIBAVFORMAT_VERSION_MINOR 17
++#define LIBAVFORMAT_VERSION_MICRO 100
  
  #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
                                                 LIBAVFORMAT_VERSION_MINOR, \