Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 12 Dec 2011 00:25:37 +0000 (01:25 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 12 Dec 2011 00:25:37 +0000 (01:25 +0100)
* qatar/master:
  x86: cabac: replace explicit memory references with "m" operands
  avplay: don't request a stereo downmix
  wmapro: use av_float2int()
  lavc: avoid invalid memcpy() in avcodec_default_release_buffer()
  lavu: replace int/float punning functions
  lavfi: install libavfilter/vsrc_buffer.h
  Remove extraneous semicolons
  sdp: Restore the original mp4 format h264 extradata if converted
  rtpenc: Add support for mp4 format h264
  rtpenc: Simplify code by introducing a separate end pointer
  movenc: Use the actual converted sample for RTP hinting
  Fix a bunch of common typos.

Conflicts:
doc/developer.texi
doc/eval.texi
doc/filters.texi
doc/protocols.texi
ffmpeg.c
ffplay.c
libavcodec/mpegvideo.h
libavcodec/x86/cabac.h
libavfilter/Makefile
libavformat/avformat.h
libavformat/cafdec.c
libavformat/flvdec.c
libavformat/flvenc.c
libavformat/gxfenc.c
libavformat/img2.c
libavformat/movenc.c
libavformat/mpegts.c
libavformat/rtpenc_h264.c
libavformat/utils.c
libavformat/wtv.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
74 files changed:
1  2 
avconv.c
cmdutils.h
doc/avconv.texi
doc/ffserver.texi
doc/protocols.texi
doc/soc.txt
ffmpeg.c
ffplay.c
ffserver.c
libavcodec/avcodec.h
libavcodec/binkaudio.c
libavcodec/bitstream.c
libavcodec/eatgv.c
libavcodec/error_resilience.c
libavcodec/h264.c
libavcodec/h264pred_template.c
libavcodec/lpc.h
libavcodec/mjpegdec.c
libavcodec/proresdec_lgpl.c
libavcodec/tscc.c
libavcodec/utils.c
libavcodec/vaapi_mpeg4.c
libavcodec/vc1dec.c
libavcodec/vc1dsp.c
libavcodec/wmaprodec.c
libavcodec/wmavoice.c
libavcodec/x86/h264_i386.h
libavcodec/x86/vc1dsp_yasm.asm
libavdevice/jack_audio.c
libavdevice/timefilter.h
libavformat/4xm.c
libavformat/aiffdec.c
libavformat/aiffenc.c
libavformat/avformat.h
libavformat/cafdec.c
libavformat/ffmdec.c
libavformat/ffmenc.c
libavformat/flvdec.c
libavformat/flvenc.c
libavformat/gxfenc.c
libavformat/http.c
libavformat/id3v2.c
libavformat/img2.c
libavformat/iv8.c
libavformat/matroskadec.c
libavformat/matroskaenc.c
libavformat/mms.h
libavformat/mov.c
libavformat/movenc.c
libavformat/movenc.h
libavformat/movenchint.c
libavformat/mpegts.c
libavformat/mpegtsenc.c
libavformat/mxfenc.c
libavformat/nuv.c
libavformat/rdt.c
libavformat/rtmppkt.c
libavformat/rtmpproto.c
libavformat/rtp.h
libavformat/rtpenc_h264.c
libavformat/sdp.c
libavformat/soxdec.c
libavformat/soxenc.c
libavformat/thp.c
libavformat/udp.c
libavformat/utils.c
libavutil/eval.h
libavutil/intfloat_readwrite.h
libpostproc/postprocess.c
libpostproc/postprocess_internal.h
libswscale/rgb2rgb.c
libswscale/swscale.c
libswscale/x86/swscale_mmx.c
tools/patcheck

diff --cc avconv.c
Simple merge
diff --cc cmdutils.h
Simple merge
diff --cc doc/avconv.texi
Simple merge
index 1b9a494f49f46b0164bc3643b410ecb3f506d0ad,c023814e0842fcb95d3beb30e04e93c9cc4e536c..074c075f0be1137957cdf979b2986bb3285c2bab
@@@ -145,9 -148,9 +145,9 @@@ set up correctly. Maybe the sound card 
  input source. Maybe you have a really awful audio interface (like I do)
  that only captures in stereo and also requires that one channel be flipped.
  If you are one of these people, then export 'AUDIO_FLIP_LEFT=1' before
 -starting avconv.
 +starting ffmpeg.
  
- @subsection The audio and video loose sync after a while.
+ @subsection The audio and video lose sync after a while.
  
  Yes, they do.
  
Simple merge
diff --cc doc/soc.txt
index 79d77d1cd7ed61220a7f6c1f2a21fb6ab2fa7b4d,89728b5201f9818c6d3301079d53008eb2d5abdc..2504dba5533615bdc2a12905f97f12e312b111a3
@@@ -18,7 -18,7 +18,7 @@@ essential that changes to their codebas
  easy reviewable that again leads us to:
  * use of a revision control system like git
  * separation of cosmetic from non-cosmetic changes (this is almost entirely
-   ignored by mentors and students in soc 2006 which might lead to a suprise
+   ignored by mentors and students in soc 2006 which might lead to a surprise
    when the code will be reviewed at the end before a possible inclusion in
 -  Libav, individual changes were generally not reviewable due to cosmetics).
 +  FFmpeg, individual changes were generally not reviewable due to cosmetics).
  * frequent commits, so that comments can be provided early
diff --cc ffmpeg.c
index ee79e32039b60e626b1f5c601478679d38fea47c,0ec3b241caffd2652b110992a3f834f3a47fed52..daa014b0e6a7bf4d64593c51889121ae336f99b6
+++ b/ffmpeg.c
@@@ -4162,13 -3797,29 +4162,13 @@@ static void opt_output_file(void *optct
      }
  
      if (!(oc->oformat->flags & AVFMT_NOFILE)) {
-         /* test if it already exists to avoid loosing precious files */
+         /* test if it already exists to avoid losing precious files */
 -        if (!file_overwrite &&
 -            (strchr(filename, ':') == NULL ||
 -             filename[1] == ':' ||
 -             av_strstart(filename, "file:", NULL))) {
 -            if (avio_check(filename, 0) == 0) {
 -                if (!using_stdin) {
 -                    fprintf(stderr,"File '%s' already exists. Overwrite ? [y/N] ", filename);
 -                    fflush(stderr);
 -                    if (!read_yesno()) {
 -                        fprintf(stderr, "Not overwriting - exiting\n");
 -                        exit_program(1);
 -                    }
 -                }
 -                else {
 -                    fprintf(stderr,"File '%s' already exists. Exiting.\n", filename);
 -                    exit_program(1);
 -                }
 -            }
 -        }
 +        assert_file_overwrite(filename);
  
          /* open the file */
 -        if ((err = avio_open(&oc->pb, filename, AVIO_FLAG_WRITE)) < 0) {
 +        if ((err = avio_open2(&oc->pb, filename, AVIO_FLAG_WRITE,
 +                              &oc->interrupt_callback,
 +                              &output_files[nb_output_files - 1].opts)) < 0) {
              print_error(filename, err);
              exit_program(1);
          }
diff --cc ffplay.c
Simple merge
diff --cc ffserver.c
index 1244b45b90d9c897f9c65f662e7edcf381117841,e4d353b559023224638cde37ec1d513d54b2d906..b66f7e69dd053abea6f95b86da3d5fa2b20bb566
@@@ -473,9 -473,9 +473,9 @@@ static void start_children(FFStream *fe
                      slash = pathname;
                  else
                      slash++;
 -                strcpy(slash, "avconv");
 +                strcpy(slash, "ffmpeg");
  
-                 http_log("Launch commandline: ");
+                 http_log("Launch command line: ");
                  http_log("%s ", pathname);
                  for (i = 1; feed->child_argv[i] && feed->child_argv[i][0]; i++)
                      http_log("%s ", feed->child_argv[i]);
Simple merge
Simple merge
index d4d7623bc35a0c24f930da950a71e84cfc1685c5,14e392f34dde25cfd4f8e1032685ba28379425e9..30aaf75fea2674ee0740247f2a93ec04c359896f
@@@ -103,10 -103,10 +103,10 @@@ static int alloc_table(VLC *vlc, int si
      vlc->table_size += size;
      if (vlc->table_size > vlc->table_allocated) {
          if(use_static)
-             abort(); //cant do anything, init_vlc() is used with too little memory
+             abort(); // cannot do anything, init_vlc() is used with too little memory
          vlc->table_allocated += (1 << vlc->bits);
 -        vlc->table = av_realloc(vlc->table,
 -                                sizeof(VLC_TYPE) * 2 * vlc->table_allocated);
 +        vlc->table = av_realloc_f(vlc->table,
 +                                  vlc->table_allocated, sizeof(VLC_TYPE) * 2);
          if (!vlc->table)
              return -1;
      }
Simple merge
Simple merge
Simple merge
index 074fad50caed93e91710cf94b3faa5f848c467c7,19100b69a903d508c8e9d738e717edb8e1f8e72d..3a1b1cf94ecadd8a906a10cc63d065fc5f7c3ee4
@@@ -388,11 -388,11 +388,11 @@@ static void FUNCC(pred16x16_##n##_dc)(u
      PREDICT_16x16_DC(PIXEL_SPLAT_X4(v));\
  }
  
- PRED16x16_X(127, (1<<(BIT_DEPTH-1))-1);
- PRED16x16_X(128, (1<<(BIT_DEPTH-1))+0);
- PRED16x16_X(129, (1<<(BIT_DEPTH-1))+1);
+ PRED16x16_X(127, (1<<(BIT_DEPTH-1))-1)
+ PRED16x16_X(128, (1<<(BIT_DEPTH-1))+0)
+ PRED16x16_X(129, (1<<(BIT_DEPTH-1))+1)
  
 -static inline void FUNCC(pred16x16_plane_compat)(uint8_t *_src, int _stride, const int svq3, const int rv40){
 +static inline void FUNCC(pred16x16_plane_compat)(uint8_t *p_src, int p_stride, const int svq3, const int rv40){
    int i, j, k;
    int a;
    INIT_CLIP
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 1f3506d1580defabc9087230451ae39b5a69eef6,eff60094b1a769e993c2c86d93e965b5f1968d1e..340965955f9bdd6e9f974c1de8a0df3c4e8c233e
@@@ -720,18 -709,8 +721,18 @@@ typedef struct AVStream 
       */
      int codec_info_nb_frames;
  
 +    /**
 +     * Stream Identifier
 +     * This is the MPEG-TS stream identifier +1
 +     * 0 means unknown
 +     */
 +    int stream_identifier;
 +
 +    int64_t interleaver_chunk_size;
 +    int64_t interleaver_chunk_duration;
 +
      /**
-      * Stream informations used internally by av_find_stream_info()
+      * Stream information used internally by av_find_stream_info()
       */
  #define MAX_STD_TIMEBASES (60*12+5)
      struct {
index 89b2bd38839180536a6dbffb28aba06703ef9d5c,4efc40f1af8a9bea3d1872025f0ace1b90dfee37..3294f0639ef24bac100f128b07cf3ca96157e4e4
@@@ -68,8 -68,8 +68,8 @@@ static int read_desc_chunk(AVFormatCont
  
      /* parse format description */
      st->codec->codec_type  = AVMEDIA_TYPE_AUDIO;
-     st->codec->sample_rate = av_int2dbl(avio_rb64(pb));
+     st->codec->sample_rate = av_int2double(avio_rb64(pb));
 -    st->codec->codec_tag   = avio_rb32(pb);
 +    st->codec->codec_tag   = avio_rl32(pb);
      flags = avio_rb32(pb);
      caf->bytes_per_packet  = avio_rb32(pb);
      st->codec->block_align = caf->bytes_per_packet;
index 86e31cc0af1f50ed35947443a8af384d1e912068,9cee3ad64fb334a35ab15d6e660fbe2598c181b1..2b7ae7ed35f67377a570f41a6ee1b338fa76ccc9
@@@ -355,11 -350,10 +355,11 @@@ static int ffm_read_header(AVFormatCont
              codec->keyint_min = avio_rb32(pb);
              codec->scenechange_threshold = avio_rb32(pb);
              codec->b_frame_strategy = avio_rb32(pb);
-             codec->qcompress = av_int2dbl(avio_rb64(pb));
-             codec->qblur = av_int2dbl(avio_rb64(pb));
+             codec->qcompress = av_int2double(avio_rb64(pb));
+             codec->qblur = av_int2double(avio_rb64(pb));
              codec->max_qdiff = avio_rb32(pb);
              codec->refs = avio_rb32(pb);
 +            codec->directpred = avio_rb32(pb);
              break;
          case AVMEDIA_TYPE_AUDIO:
              codec->sample_rate = avio_rb32(pb);
index 1f65cac017fdb8ae7b8ef56f6517eedee3154921,d304f57ac4cbead59f16d8d69919decb9d006c7c..7378808567a52abbeaff2761f1d4e087117fe42f
@@@ -163,11 -162,10 +163,11 @@@ static int ffm_write_header(AVFormatCon
              avio_wb32(pb, codec->keyint_min);
              avio_wb32(pb, codec->scenechange_threshold);
              avio_wb32(pb, codec->b_frame_strategy);
-             avio_wb64(pb, av_dbl2int(codec->qcompress));
-             avio_wb64(pb, av_dbl2int(codec->qblur));
+             avio_wb64(pb, av_double2int(codec->qcompress));
+             avio_wb64(pb, av_double2int(codec->qblur));
              avio_wb32(pb, codec->max_qdiff);
              avio_wb32(pb, codec->refs);
 +            avio_wb32(pb, codec->directpred);
              break;
          case AVMEDIA_TYPE_AUDIO:
              avio_wb32(pb, codec->sample_rate);
index 0699f544b5ca0fb7f20442b7d16cfb8f86274525,4fc5a4949efcc63bf988a03f07fdc337f3fd99a6..34945299b6001c70b38444cc962e567be57e0b52
@@@ -187,7 -189,8 +187,7 @@@ static int parse_keyframes_index(AVForm
          for (i = 0; i < arraylen && avio_tell(ioc) < max_pos - 1; i++) {
              if (avio_r8(ioc) != AMF_DATA_TYPE_NUMBER)
                  goto finish;
-             current_array[0][i] = av_int2dbl(avio_rb64(ioc));
 -            num_val = av_int2double(avio_rb64(ioc));
 -            current_array[i] = num_val;
++            current_array[0][i] = av_int2double(avio_rb64(ioc));
          }
          if (times && filepositions) {
              // All done, exiting at a position allowing amf_parse_object
index 2a223eeeb3a7476959d4da026cf8efb119ebda44,dfa17e0374244885a25ae016613a0e1806de6e57..2384e81276046036c9f3f17388e4fd39ee4a7339
@@@ -19,8 -19,7 +19,8 @@@
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
- #include "libavutil/intfloat_readwrite.h"
 +#include "libavutil/intreadwrite.h"
+ #include "libavutil/intfloat.h"
  #include "avformat.h"
  #include "flv.h"
  #include "internal.h"
index 02047c68d573991f7ed0694e30e65d1fd2801578,124064fc550c0a86fb60ac83a6973724e0177782..47b64efc9f724912039a56353cb5687b506c8a25
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
- #include "libavutil/intfloat_readwrite.h"
+ #include "libavutil/intfloat.h"
 +#include "libavutil/opt.h"
  #include "libavutil/mathematics.h"
 +#include "libavcodec/timecode.h"
  #include "avformat.h"
  #include "internal.h"
  #include "gxf.h"
Simple merge
Simple merge
index 98397f4dcb514fe4096780f9a21d2e412a594d50,2af561c2ce00aa757d60235c56ed95e64ef0a215..bc35591a0b2510ec2c86efb945891ff1536d676f
@@@ -446,7 -432,7 +446,7 @@@ static int write_packet(AVFormatContex
                       (!st->codec->extradata_size &&
                        AV_RL32(pkt->data+4) != MKTAG('j','P',' ',' '))){ // signature
              error:
-                 av_log(s, AV_LOG_ERROR, "malformated jpeg2000 codestream %X\n", AV_RB32(pkt->data));
 -                av_log(s, AV_LOG_ERROR, "malformed JPEG 2000 codestream\n");
++                av_log(s, AV_LOG_ERROR, "malformed JPEG 2000 codestream %X\n", AV_RB32(pkt->data));
                  return -1;
              }
          }
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 181965f7200f9c87dd0b5f0ecb99a91395a2e8e1,d1076c34c49b638ba9c5edf9a42c04a90039cba9..610a1fcff3fa450cc457ec93efeb199aaeb716d0
@@@ -2252,25 -2036,13 +2253,35 @@@ int ff_mov_write_packet(AVFormatContex
      if (enc->codec_id == CODEC_ID_H264 && trk->vosLen > 0 && *(uint8_t *)trk->vosData != 1) {
          /* from x264 or from bytestream h264 */
          /* nal reformating needed */
 -        if (trk->hint_track >= 0 && trk->hint_track < mov->nb_streams) {
 +        if(mov->frag_seq_num>0){
 +            uint8_t *buf=NULL;
 +            size= pkt->size;
++
 +            if(ff_avc_parse_nal_units_buf(pkt->data, &buf, &size) < 0){
 +                av_log(s, AV_LOG_ERROR, "malformated H264 bitstream\n");
 +                return -1;
 +            }
 +            trk->cluster[trk->entry].data= buf;
-         }else
++            if (trk->hint_track >= 0 && trk->hint_track < mov->nb_streams) {
++                reformatted_data= av_malloc(size);
++                memcpy(reformatted_data, buf, size);
++            }
++        }else if (trk->hint_track >= 0 && trk->hint_track < mov->nb_streams) {
+             ff_avc_parse_nal_units_buf(pkt->data, &reformatted_data,
+                                        &size);
+             avio_write(pb, reformatted_data, size);
+         } else {
              size = ff_avc_parse_nal_units(pb, pkt->data, pkt->size);
+         }
 +    } else if (enc->codec_id == CODEC_ID_AAC && pkt->size > 2 &&
 +               (AV_RB16(pkt->data) & 0xfff0) == 0xfff0) {
 +        av_log(s, AV_LOG_ERROR, "malformated aac bitstream, use -absf aac_adtstoasc\n");
 +        return -1;
 +    } else if (mov->frag_seq_num>0){
 +        trk->cluster[trk->entry].data = av_malloc(size);
 +        if (!trk->cluster[trk->entry].data)
 +            return AVERROR(ENOMEM);
 +        memcpy(trk->cluster[trk->entry].data, pkt->data, size);
      } else {
          avio_write(pb, pkt->data, size);
      }
Simple merge
Simple merge
index 8d026fd3724d920cad296a9a537adab05851203e,37ffae9f669c7d2014d5fb835e4c56dfbc7b0e2b..a8871cc57698382bf8d22ab5b325da702ff722eb
@@@ -1939,12 -1892,9 +1939,12 @@@ static int mpegts_read_header(AVFormatC
      if (s->iformat == &ff_mpegts_demuxer) {
          /* normal demux */
  
-         /* first do a scanning to get all the services */
+         /* first do a scan to get all the services */
 -        if (pb->seekable && avio_seek(pb, pos, SEEK_SET) < 0)
 -            av_log(s, AV_LOG_ERROR, "Unable to seek back to the start\n");
 +        /* NOTE: We attempt to seek on non-seekable files as well, as the
 +         * probe buffer usually is big enough. Only warn if the seek failed
 +         * on files where the seek should work. */
 +        if (avio_seek(pb, pos, SEEK_SET) < 0)
 +            av_log(s, pb->seekable ? AV_LOG_ERROR : AV_LOG_INFO, "Unable to seek back to the start\n");
  
          mpegts_open_section_filter(ts, SDT_PID, sdt_cb, ts, 1);
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 6a55e4fe691ec74138b2508119e2c650d529e8b7,116f780efa09e3cd532c96a12e482c4ba9d58244..ca444b266924b214c4034150ab48c5a89a193878
@@@ -1655,43 -1555,20 +1655,43 @@@ static void name ## ToUV_half_c(uint8_
                                   maskr, maskg, maskb, rsh, gsh, bsh, S); \
  }
  
- rgb16_32_wrapper(PIX_FMT_BGR32,    bgr32,  16, 0,  0, 0, 0xFF0000, 0xFF00,   0x00FF,  8, 0,  8, RGB2YUV_SHIFT+8);
- rgb16_32_wrapper(PIX_FMT_BGR32_1,  bgr321, 16, 0,  0, 8, 0xFF0000, 0xFF00,   0x00FF,  8, 0,  8, RGB2YUV_SHIFT+8);
- rgb16_32_wrapper(PIX_FMT_RGB32,    rgb32,   0, 0, 16, 0,   0x00FF, 0xFF00, 0xFF0000,  8, 0,  8, RGB2YUV_SHIFT+8);
- rgb16_32_wrapper(PIX_FMT_RGB32_1,  rgb321,  0, 0, 16, 8,   0x00FF, 0xFF00, 0xFF0000,  8, 0,  8, RGB2YUV_SHIFT+8);
- rgb16_32_wrapper(PIX_FMT_BGR565LE, bgr16le, 0, 0,  0, 0,   0x001F, 0x07E0,   0xF800, 11, 5,  0, RGB2YUV_SHIFT+8);
- rgb16_32_wrapper(PIX_FMT_BGR555LE, bgr15le, 0, 0,  0, 0,   0x001F, 0x03E0,   0x7C00, 10, 5,  0, RGB2YUV_SHIFT+7);
- rgb16_32_wrapper(PIX_FMT_RGB565LE, rgb16le, 0, 0,  0, 0,   0xF800, 0x07E0,   0x001F,  0, 5, 11, RGB2YUV_SHIFT+8);
- rgb16_32_wrapper(PIX_FMT_RGB555LE, rgb15le, 0, 0,  0, 0,   0x7C00, 0x03E0,   0x001F,  0, 5, 10, RGB2YUV_SHIFT+7);
- rgb16_32_wrapper(PIX_FMT_BGR565BE, bgr16be, 0, 0,  0, 0,   0x001F, 0x07E0,   0xF800, 11, 5,  0, RGB2YUV_SHIFT+8);
- rgb16_32_wrapper(PIX_FMT_BGR555BE, bgr15be, 0, 0,  0, 0,   0x001F, 0x03E0,   0x7C00, 10, 5,  0, RGB2YUV_SHIFT+7);
- rgb16_32_wrapper(PIX_FMT_RGB565BE, rgb16be, 0, 0,  0, 0,   0xF800, 0x07E0,   0x001F,  0, 5, 11, RGB2YUV_SHIFT+8);
- rgb16_32_wrapper(PIX_FMT_RGB555BE, rgb15be, 0, 0,  0, 0,   0x7C00, 0x03E0,   0x001F,  0, 5, 10, RGB2YUV_SHIFT+7);
+ rgb16_32_wrapper(PIX_FMT_BGR32,    bgr32,  16, 0,  0, 0, 0xFF0000, 0xFF00,   0x00FF,  8, 0,  8, RGB2YUV_SHIFT+8)
+ rgb16_32_wrapper(PIX_FMT_BGR32_1,  bgr321, 16, 0,  0, 8, 0xFF0000, 0xFF00,   0x00FF,  8, 0,  8, RGB2YUV_SHIFT+8)
+ rgb16_32_wrapper(PIX_FMT_RGB32,    rgb32,   0, 0, 16, 0,   0x00FF, 0xFF00, 0xFF0000,  8, 0,  8, RGB2YUV_SHIFT+8)
+ rgb16_32_wrapper(PIX_FMT_RGB32_1,  rgb321,  0, 0, 16, 8,   0x00FF, 0xFF00, 0xFF0000,  8, 0,  8, RGB2YUV_SHIFT+8)
+ rgb16_32_wrapper(PIX_FMT_BGR565LE, bgr16le, 0, 0,  0, 0,   0x001F, 0x07E0,   0xF800, 11, 5,  0, RGB2YUV_SHIFT+8)
+ rgb16_32_wrapper(PIX_FMT_BGR555LE, bgr15le, 0, 0,  0, 0,   0x001F, 0x03E0,   0x7C00, 10, 5,  0, RGB2YUV_SHIFT+7)
+ rgb16_32_wrapper(PIX_FMT_RGB565LE, rgb16le, 0, 0,  0, 0,   0xF800, 0x07E0,   0x001F,  0, 5, 11, RGB2YUV_SHIFT+8)
+ rgb16_32_wrapper(PIX_FMT_RGB555LE, rgb15le, 0, 0,  0, 0,   0x7C00, 0x03E0,   0x001F,  0, 5, 10, RGB2YUV_SHIFT+7)
+ rgb16_32_wrapper(PIX_FMT_BGR565BE, bgr16be, 0, 0,  0, 0,   0x001F, 0x07E0,   0xF800, 11, 5,  0, RGB2YUV_SHIFT+8)
+ rgb16_32_wrapper(PIX_FMT_BGR555BE, bgr15be, 0, 0,  0, 0,   0x001F, 0x03E0,   0x7C00, 10, 5,  0, RGB2YUV_SHIFT+7)
+ rgb16_32_wrapper(PIX_FMT_RGB565BE, rgb16be, 0, 0,  0, 0,   0xF800, 0x07E0,   0x001F,  0, 5, 11, RGB2YUV_SHIFT+8)
+ rgb16_32_wrapper(PIX_FMT_RGB555BE, rgb15be, 0, 0,  0, 0,   0x7C00, 0x03E0,   0x001F,  0, 5, 10, RGB2YUV_SHIFT+7)
  
 -static void abgrToA_c(uint8_t *dst, const uint8_t *src, int width, uint32_t *unused)
 +static void gbr24pToUV_half_c(uint16_t *dstU, uint16_t *dstV,
 +                         const uint8_t *gsrc, const uint8_t *bsrc, const uint8_t *rsrc,
 +                         int width, enum PixelFormat origin)
 +{
 +    int i;
 +    for (i = 0; i < width; i++) {
 +        unsigned int g   = gsrc[2*i] + gsrc[2*i+1];
 +        unsigned int b   = bsrc[2*i] + bsrc[2*i+1];
 +        unsigned int r   = rsrc[2*i] + rsrc[2*i+1];
 +
 +        dstU[i] = (RU*r + GU*g + BU*b + (0x4001<<(RGB2YUV_SHIFT-6))) >> (RGB2YUV_SHIFT-6+1);
 +        dstV[i] = (RV*r + GV*g + BV*b + (0x4001<<(RGB2YUV_SHIFT-6))) >> (RGB2YUV_SHIFT-6+1);
 +    }
 +}
 +
 +static void abgrToA_c(int16_t *dst, const uint8_t *src, const uint8_t *unused1, const uint8_t *unused2, int width, uint32_t *unused)
 +{
 +    int i;
 +    for (i=0; i<width; i++) {
 +        dst[i]= src[4*i]<<6;
 +    }
 +}
 +
 +static void rgbaToA_c(int16_t *dst, const uint8_t *src, const uint8_t *unused1, const uint8_t *unused2, int width, uint32_t *unused)
  {
      int i;
      for (i=0; i<width; i++) {
Simple merge
diff --cc tools/patcheck
Simple merge