Browse code

Merge remote-tracking branch 'qatar/master'

* qatar/master: (22 commits)
frwu: Employ more meaningful return values.
fraps: Use av_fast_padded_malloc() instead of av_realloc()
mjpegdec: use av_fast_padded_malloc()
eatqi: use av_fast_padded_malloc()
asv1: use av_fast_padded_malloc()
avcodec: Add av_fast_padded_malloc().
swscale: enable dithering in MMX functions.
swscale: make rgb24 function macros slightly smaller.
avcodec.h: Remove some disabled cruft.
swscale: remove obsolete comment.
swscale-test: Drop unused argc and argv arguments from main().
zmbv: Employ more meaningful return values.
zmbvenc: Employ more meaningful return values.
vc1: prevent null pointer dereference on broken files
zmbv: check av_realloc() return values and avoid memleaks on ENOMEM
truespeech: align buffer
ac3: Do not read past the end of ff_ac3_band_start_tab.
dv: Fix small stack overread related to CVE-2011-3929 and CVE-2011-3936.
dv: Fix null pointer dereference due to ach=0
dv: check stype
...

Conflicts:
doc/APIchanges
libavcodec/asv1.c
libavcodec/avcodec.h
libavcodec/eatqi.c
libavcodec/fraps.c
libavcodec/frwu.c
libavcodec/zmbv.c
libavformat/dv.c
libswscale/swscale.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>

Michael Niedermayer authored on 2012/02/02 10:02:18
Showing 19 changed files
... ...
@@ -16,6 +16,11 @@ API changes, most recent first:
16 16
 2012-01-24 - xxxxxxx - lavfi 2.60.100
17 17
   Add avfilter_graph_dump.
18 18
 
19
+2012-02-01 - xxxxxxx - lavc 54.01.0
20
+  Add av_fast_padded_malloc() as alternative for av_realloc() when aligned
21
+  memory is required. The buffer will always have FF_INPUT_BUFFER_PADDING_SIZE
22
+  zero-padded bytes at the end.
23
+
19 24
 2012-01-31 - xxxxxxx - lavf 54.01.0
20 25
   Add avformat_get_riff_video_tags() and avformat_get_riff_audio_tags().
21 26
 
... ...
@@ -109,7 +109,7 @@ static void ac3_bit_alloc_calc_bap_c(int16_t *mask, int16_t *psd,
109 109
                                      int snr_offset, int floor,
110 110
                                      const uint8_t *bap_tab, uint8_t *bap)
111 111
 {
112
-    int bin, band;
112
+    int bin, band, band_end;
113 113
 
114 114
     /* special case, if snr offset is -960, set all bap's to zero */
115 115
     if (snr_offset == -960) {
... ...
@@ -121,12 +121,14 @@ static void ac3_bit_alloc_calc_bap_c(int16_t *mask, int16_t *psd,
121 121
     band = ff_ac3_bin_to_band_tab[start];
122 122
     do {
123 123
         int m = (FFMAX(mask[band] - snr_offset - floor, 0) & 0x1FE0) + floor;
124
-        int band_end = FFMIN(ff_ac3_band_start_tab[band+1], end);
124
+        band_end = ff_ac3_band_start_tab[++band];
125
+        band_end = FFMIN(band_end, end);
126
+
125 127
         for (; bin < band_end; bin++) {
126 128
             int address = av_clip((psd[bin] - m) >> 5, 0, 63);
127 129
             bap[bin] = bap_tab[address];
128 130
         }
129
-    } while (end > ff_ac3_band_start_tab[band++]);
131
+    } while (end > band_end);
130 132
 }
131 133
 
132 134
 static void ac3_update_bap_counts_c(uint16_t mant_cnt[16], uint8_t *bap,
... ...
@@ -408,7 +408,8 @@ static int decode_frame(AVCodecContext *avctx,
408 408
     p->pict_type= AV_PICTURE_TYPE_I;
409 409
     p->key_frame= 1;
410 410
 
411
-    av_fast_padded_malloc(&a->bitstream_buffer, &a->bitstream_buffer_size, buf_size);
411
+    av_fast_padded_malloc(&a->bitstream_buffer, &a->bitstream_buffer_size,
412
+                          buf_size);
412 413
     if (!a->bitstream_buffer)
413 414
         return AVERROR(ENOMEM);
414 415
 
... ...
@@ -185,9 +185,6 @@ enum CodecID {
185 185
     CODEC_ID_TIERTEXSEQVIDEO,
186 186
     CODEC_ID_TIFF,
187 187
     CODEC_ID_GIF,
188
-#if LIBAVCODEC_VERSION_MAJOR == 53
189
-    CODEC_ID_FFH264,
190
-#endif
191 188
     CODEC_ID_DXA,
192 189
     CODEC_ID_DNXHD,
193 190
     CODEC_ID_THP,
... ...
@@ -205,10 +202,6 @@ enum CodecID {
205 205
     CODEC_ID_INDEO5,
206 206
     CODEC_ID_MIMIC,
207 207
     CODEC_ID_RL2,
208
-#if LIBAVCODEC_VERSION_MAJOR == 53
209
-    CODEC_ID_8SVX_EXP,
210
-    CODEC_ID_8SVX_FIB,
211
-#endif
212 208
     CODEC_ID_ESCAPE124,
213 209
     CODEC_ID_DIRAC,
214 210
     CODEC_ID_BFI,
... ...
@@ -247,18 +240,13 @@ enum CodecID {
247 247
     CODEC_ID_DFA,
248 248
     CODEC_ID_WMV3IMAGE,
249 249
     CODEC_ID_VC1IMAGE,
250
-#if LIBAVCODEC_VERSION_MAJOR == 53
251
-    CODEC_ID_G723_1_DEPRECATED,
252
-    CODEC_ID_G729_DEPRECATED,
253
-#endif
254
-    CODEC_ID_UTVIDEO_DEPRECATED,
250
+    CODEC_ID_UTVIDEO,
255 251
     CODEC_ID_BMV_VIDEO,
256 252
     CODEC_ID_VBLE,
257 253
     CODEC_ID_DXTORY,
258 254
     CODEC_ID_V410,
259 255
     CODEC_ID_XWD,
260 256
     CODEC_ID_Y41P       = MKBETAG('Y','4','1','P'),
261
-    CODEC_ID_UTVIDEO = 0x800,
262 257
     CODEC_ID_ESCAPE130  = MKBETAG('E','1','3','0'),
263 258
     CODEC_ID_AVRP       = MKBETAG('A','V','R','P'),
264 259
 
... ...
@@ -397,15 +385,11 @@ enum CodecID {
397 397
     CODEC_ID_AAC_LATM,
398 398
     CODEC_ID_QDMC,
399 399
     CODEC_ID_CELT,
400
-#if LIBAVCODEC_VERSION_MAJOR > 53
401
-    CODEC_ID_G723_1_DEPRECATED,
402
-    CODEC_ID_G729_DEPRECATED,
400
+    CODEC_ID_G723_1,
401
+    CODEC_ID_G729,
403 402
     CODEC_ID_8SVX_EXP,
404 403
     CODEC_ID_8SVX_FIB,
405
-#endif
406 404
     CODEC_ID_BMV_AUDIO,
407
-    CODEC_ID_G729 = 0x15800,
408
-    CODEC_ID_G723_1= 0x15801,
409 405
     CODEC_ID_FFWAVESYNTH = MKBETAG('F','F','W','S'),
410 406
     CODEC_ID_8SVX_RAW   = MKBETAG('8','S','V','X'),
411 407
     CODEC_ID_SONIC       = MKBETAG('S','O','N','C'),
... ...
@@ -1523,7 +1507,6 @@ typedef struct AVCodecContext {
1523 1523
 #define FF_BUG_DC_CLIP          4096
1524 1524
 #define FF_BUG_MS               8192 ///< Work around various bugs in Microsoft's broken decoders.
1525 1525
 #define FF_BUG_TRUNCATED       16384
1526
-//#define FF_BUG_FAKE_SCALABILITY 16 //Autodetection should work 100%.
1527 1526
 
1528 1527
     /**
1529 1528
      * luma single coefficient elimination threshold
... ...
@@ -2096,14 +2079,6 @@ typedef struct AVCodecContext {
2096 2096
      * - decoding: unused
2097 2097
      */
2098 2098
     int context_model;
2099
-#if 0
2100
-    /**
2101
-     *
2102
-     * - encoding: unused
2103
-     * - decoding: Set by user.
2104
-     */
2105
-    uint8_t * (*realloc)(struct AVCodecContext *s, uint8_t *buf, int buf_size);
2106
-#endif
2107 2099
 
2108 2100
     /**
2109 2101
      * slice flags
... ...
@@ -127,7 +127,8 @@ static int tqi_decode_frame(AVCodecContext *avctx,
127 127
         return -1;
128 128
     }
129 129
 
130
-    av_fast_padded_malloc(&t->bitstream_buf, &t->bitstream_buf_size, buf_end-buf);
130
+    av_fast_padded_malloc(&t->bitstream_buf, &t->bitstream_buf_size,
131
+                          buf_end - buf);
131 132
     if (!t->bitstream_buf)
132 133
         return AVERROR(ENOMEM);
133 134
     s->dsp.bswap_buf(t->bitstream_buf, (const uint32_t*)buf, (buf_end-buf)/4);
... ...
@@ -28,7 +28,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
28 28
 {
29 29
     if (avctx->width & 1) {
30 30
         av_log(avctx, AV_LOG_ERROR, "frwu needs even width\n");
31
-        return -1;
31
+        return AVERROR(EINVAL);
32 32
     }
33 33
     avctx->pix_fmt = PIX_FMT_UYVY422;
34 34
 
... ...
@@ -42,7 +42,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
42 42
 static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
43 43
                         AVPacket *avpkt)
44 44
 {
45
-    int field;
45
+    int field, ret;
46 46
     AVFrame *pic = avctx->coded_frame;
47 47
     const uint8_t *buf = avpkt->data;
48 48
     const uint8_t *buf_end = buf + avpkt->size;
... ...
@@ -52,16 +52,18 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
52 52
 
53 53
     if (avpkt->size < avctx->width * 2 * avctx->height + 4 + 2*8) {
54 54
         av_log(avctx, AV_LOG_ERROR, "Packet is too small.\n");
55
-        return -1;
55
+        return AVERROR_INVALIDDATA;
56 56
     }
57 57
     if (bytestream_get_le32(&buf) != AV_RL32("FRW1")) {
58 58
         av_log(avctx, AV_LOG_ERROR, "incorrect marker\n");
59
-        return -1;
59
+        return AVERROR_INVALIDDATA;
60 60
     }
61 61
 
62 62
     pic->reference = 0;
63
-    if (avctx->get_buffer(avctx, pic) < 0)
64
-        return -1;
63
+    if ((ret = avctx->get_buffer(avctx, pic)) < 0) {
64
+        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
65
+        return ret;
66
+    }
65 67
 
66 68
     pic->pict_type = AV_PICTURE_TYPE_I;
67 69
     pic->key_frame = 1;
... ...
@@ -74,16 +76,16 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
74 74
         int field_size, min_field_size = avctx->width * 2 * field_h;
75 75
         uint8_t *dst = pic->data[0];
76 76
         if (buf_end - buf < 8)
77
-            return -1;
77
+            return AVERROR_INVALIDDATA;
78 78
         buf += 4; // flags? 0x80 == bottom field maybe?
79 79
         field_size = bytestream_get_le32(&buf);
80 80
         if (field_size < min_field_size) {
81 81
             av_log(avctx, AV_LOG_ERROR, "Field size %i is too small (required %i)\n", field_size, min_field_size);
82
-            return -1;
82
+            return AVERROR_INVALIDDATA;
83 83
         }
84 84
         if (buf_end - buf < field_size) {
85 85
             av_log(avctx, AV_LOG_ERROR, "Packet is too small, need %i, have %i\n", field_size, (int)(buf_end - buf));
86
-            return -1;
86
+            return AVERROR_INVALIDDATA;
87 87
         }
88 88
         if (field)
89 89
             dst += pic->linesize[0];
... ...
@@ -21,52 +21,80 @@
21 21
 #include <stdint.h>
22 22
 #include <stdio.h>
23 23
 
24
-#include "avcodec.h"
25
-#include "dsputil.h"
24
+#include "libavutil/mem.h"
25
+
26 26
 #include "get_bits.h"
27 27
 #include "golomb.h"
28 28
 #include "put_bits.h"
29 29
 
30
-#undef printf
31
-#define COUNT 8000
32
-#define SIZE (COUNT * 40)
30
+#undef fprintf
31
+#define COUNT 8191
32
+#define SIZE (COUNT * 4)
33 33
 
34 34
 int main(void)
35 35
 {
36
-    int i;
37
-    uint8_t temp[SIZE];
36
+    int i, ret = 0;
37
+    uint8_t *temp;
38 38
     PutBitContext pb;
39 39
     GetBitContext gb;
40 40
 
41
+    temp = av_malloc(SIZE);
42
+    if (!temp)
43
+        return 2;
44
+
41 45
     init_put_bits(&pb, temp, SIZE);
42
-    printf("testing unsigned exp golomb\n");
43 46
     for (i = 0; i < COUNT; i++)
44 47
         set_ue_golomb(&pb, i);
45 48
     flush_put_bits(&pb);
46 49
 
47 50
     init_get_bits(&gb, temp, 8 * SIZE);
48 51
     for (i = 0; i < COUNT; i++) {
49
-        int j, s = show_bits(&gb, 24);
52
+        int j, s = show_bits(&gb, 25);
50 53
 
51 54
         j = get_ue_golomb(&gb);
52
-        if (j != i)
53
-            printf("mismatch at %d (%d should be %d) bits: %6X\n", i, j, i, s);
55
+        if (j != i) {
56
+            fprintf(stderr, "get_ue_golomb: expected %d, got %d. bits: %7x\n",
57
+                    i, j, s);
58
+            ret = 1;
59
+        }
60
+    }
61
+
62
+#define EXTEND(i) (i << 3 | i & 7)
63
+    init_put_bits(&pb, temp, SIZE);
64
+    for (i = 0; i < COUNT; i++)
65
+        set_ue_golomb(&pb, EXTEND(i));
66
+    flush_put_bits(&pb);
67
+
68
+    init_get_bits(&gb, temp, 8 * SIZE);
69
+    for (i = 0; i < COUNT; i++) {
70
+        int j, s = show_bits_long(&gb, 32);
71
+
72
+        j = get_ue_golomb_long(&gb);
73
+        if (j != EXTEND(i)) {
74
+            fprintf(stderr, "get_ue_golomb_long: expected %d, got %d. "
75
+                    "bits: %8x\n", EXTEND(i), j, s);
76
+            ret = 1;
77
+        }
54 78
     }
55 79
 
56 80
     init_put_bits(&pb, temp, SIZE);
57
-    printf("testing signed exp golomb\n");
58 81
     for (i = 0; i < COUNT; i++)
59 82
         set_se_golomb(&pb, i - COUNT / 2);
60 83
     flush_put_bits(&pb);
61 84
 
62 85
     init_get_bits(&gb, temp, 8 * SIZE);
63 86
     for (i = 0; i < COUNT; i++) {
64
-        int j, s = show_bits(&gb, 24);
87
+        int j, s = show_bits(&gb, 25);
65 88
 
66 89
         j = get_se_golomb(&gb);
67
-        if (j != i - COUNT / 2)
68
-            printf("mismatch at %d (%d should be %d) bits: %6X\n", i, j, i, s);
90
+        if (j != i - COUNT / 2) {
91
+            fprintf(stderr, "get_se_golomb: expected %d, got %d. bits: %7x\n",
92
+                    i - COUNT / 2, j, s);
93
+            ret = 1;
94
+        }
69 95
     }
70 96
 
71
-    return 0;
97
+    av_free(temp);
98
+
99
+    return ret;
72 100
 }
... ...
@@ -37,7 +37,7 @@ typedef struct {
37 37
     AVFrame frame;
38 38
     DSPContext dsp;
39 39
     /* input data */
40
-    uint8_t buffer[32];
40
+    DECLARE_ALIGNED(16, uint8_t, buffer)[32];
41 41
     int16_t vector[8];  ///< input vector: 5/5/4/4/4/3/3/3
42 42
     int offset1[2];     ///< 8-bit value, used in one copying offset
43 43
     int offset2[4];     ///< 7-bit value, encodes offsets for copying and for two-point filter
... ...
@@ -91,7 +91,7 @@ void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size)
91 91
 {
92 92
     uint8_t **p = ptr;
93 93
     if (min_size > SIZE_MAX - FF_INPUT_BUFFER_PADDING_SIZE) {
94
-        *p = NULL;
94
+        av_freep(p);
95 95
         *size = 0;
96 96
         return;
97 97
     }
... ...
@@ -1448,9 +1448,9 @@ av_cold int avcodec_close(AVCodecContext *avctx)
1448 1448
 static enum CodecID remap_deprecated_codec_id(enum CodecID id)
1449 1449
 {
1450 1450
     switch(id){
1451
-        case CODEC_ID_G723_1_DEPRECATED : return CODEC_ID_G723_1;
1452
-        case CODEC_ID_G729_DEPRECATED   : return CODEC_ID_G729;
1453
-        case CODEC_ID_UTVIDEO_DEPRECATED: return CODEC_ID_UTVIDEO;
1451
+        //This is for future deprecatec codec ids, its empty since
1452
+        //last major bump but will fill up again over time, please dont remove it
1453
+//         case CODEC_ID_UTVIDEO_DEPRECATED: return CODEC_ID_UTVIDEO;
1454 1454
         default                         : return id;
1455 1455
     }
1456 1456
 }
... ...
@@ -5712,7 +5712,7 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data,
5712 5712
             if (!v->field_mode || v->second_field)
5713 5713
                 s->end_mb_y = (i == n_slices     ) ? mb_height : FFMIN(mb_height, slices[i].mby_start % mb_height);
5714 5714
             else
5715
-                s->end_mb_y = (i == n_slices1 + 1) ? mb_height : FFMIN(mb_height, slices[i].mby_start % mb_height);
5715
+                s->end_mb_y = (i <= n_slices1 + 1) ? mb_height : FFMIN(mb_height, slices[i].mby_start % mb_height);
5716 5716
             vc1_decode_blocks(v);
5717 5717
             if (i != n_slices)
5718 5718
                 s->gb = slices[i].gb;
... ...
@@ -403,16 +403,17 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
403 403
     ZmbvContext * const c = avctx->priv_data;
404 404
     int zret = Z_OK; // Zlib return code
405 405
     int len = buf_size;
406
-    int hi_ver, lo_ver;
406
+    int hi_ver, lo_ver, ret;
407
+    uint8_t *tmp;
407 408
 
408 409
     if (c->pic.data[0])
409 410
             avctx->release_buffer(avctx, &c->pic);
410 411
 
411 412
     c->pic.reference = 3;
412 413
     c->pic.buffer_hints = FF_BUFFER_HINTS_VALID;
413
-    if (avctx->get_buffer(avctx, &c->pic) < 0) {
414
+    if ((ret = avctx->get_buffer(avctx, &c->pic)) < 0) {
414 415
         av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
415
-        return -1;
416
+        return ret;
416 417
     }
417 418
 
418 419
     /* parse header */
... ...
@@ -434,19 +435,19 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
434 434
                "Flags=%X ver=%i.%i comp=%i fmt=%i blk=%ix%i\n",
435 435
                c->flags,hi_ver,lo_ver,c->comp,c->fmt,c->bw,c->bh);
436 436
         if (hi_ver != 0 || lo_ver != 1) {
437
-            av_log(avctx, AV_LOG_ERROR, "Unsupported version %i.%i\n",
438
-            hi_ver, lo_ver);
439
-            return -1;
437
+            av_log_ask_for_sample(avctx, "Unsupported version %i.%i\n",
438
+                                  hi_ver, lo_ver);
439
+            return AVERROR_PATCHWELCOME;
440 440
         }
441 441
         if (c->bw == 0 || c->bh == 0) {
442
-            av_log(avctx, AV_LOG_ERROR, "Unsupported block size %ix%i\n",
443
-                   c->bw, c->bh);
444
-            return -1;
442
+            av_log_ask_for_sample(avctx, "Unsupported block size %ix%i\n",
443
+                                  c->bw, c->bh);
444
+            return AVERROR_PATCHWELCOME;
445 445
         }
446 446
         if (c->comp != 0 && c->comp != 1) {
447
-            av_log(avctx, AV_LOG_ERROR, "Unsupported compression type %i\n",
448
-                   c->comp);
449
-            return -1;
447
+            av_log_ask_for_sample(avctx, "Unsupported compression type %i\n",
448
+                                  c->comp);
449
+            return AVERROR_PATCHWELCOME;
450 450
         }
451 451
 
452 452
         switch (c->fmt) {
... ...
@@ -475,9 +476,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
475 475
             break;
476 476
         default:
477 477
             c->decode_xor = NULL;
478
-            av_log(avctx, AV_LOG_ERROR,
479
-                   "Unsupported (for now) format %i\n", c->fmt);
480
-            return -1;
478
+            av_log_ask_for_sample(avctx, "Unsupported (for now) format %i\n",
479
+                                  c->fmt);
480
+            return AVERROR_PATCHWELCOME;
481 481
         }
482 482
 
483 483
         zret = inflateReset(&c->zstream);
... ...
@@ -495,10 +496,10 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
495 495
         c->decode_intra= decode_intra;
496 496
     }
497 497
 
498
-    if (c->decode_intra == NULL) {
499
-        av_log(avctx, AV_LOG_ERROR, "Error! Got no format or no keyframe!\n");
500
-        return -1;
501
-    }
498
+     if (c->decode_intra == NULL) {
499
+         av_log(avctx, AV_LOG_ERROR, "Error! Got no format or no keyframe!\n");
500
+         return AVERROR_INVALIDDATA;
501
+     }
502 502
 
503 503
     if (c->comp == 0) { //Uncompressed data
504 504
         memcpy(c->decomp_buf, buf, len);
... ...
@@ -628,7 +629,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
628 628
         if ((c->decomp_buf = av_malloc(c->decomp_size)) == NULL) {
629 629
             av_log(avctx, AV_LOG_ERROR,
630 630
                    "Can't allocate decompression buffer.\n");
631
-            return 1;
631
+            return AVERROR(ENOMEM);
632 632
         }
633 633
     }
634 634
 
... ...
@@ -638,7 +639,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
638 638
     zret = inflateInit(&c->zstream);
639 639
     if (zret != Z_OK) {
640 640
         av_log(avctx, AV_LOG_ERROR, "Inflate init error: %d\n", zret);
641
-        return 1;
641
+        return -1;
642 642
     }
643 643
 
644 644
     return 0;
... ...
@@ -265,7 +265,7 @@ static av_cold int encode_init(AVCodecContext *avctx)
265 265
         lvl = avctx->compression_level;
266 266
     if(lvl < 0 || lvl > 9){
267 267
         av_log(avctx, AV_LOG_ERROR, "Compression level should be 0-9, not %i\n", lvl);
268
-        return -1;
268
+        return AVERROR(EINVAL);
269 269
     }
270 270
 
271 271
     // Needed if zlib unused or init aborted before deflateInit
... ...
@@ -274,7 +274,7 @@ static av_cold int encode_init(AVCodecContext *avctx)
274 274
         ((avctx->width + ZMBV_BLOCK - 1) / ZMBV_BLOCK) * ((avctx->height + ZMBV_BLOCK - 1) / ZMBV_BLOCK) * 2 + 4;
275 275
     if ((c->work_buf = av_malloc(c->comp_size)) == NULL) {
276 276
         av_log(avctx, AV_LOG_ERROR, "Can't allocate work buffer.\n");
277
-        return -1;
277
+        return AVERROR(ENOMEM);
278 278
     }
279 279
     /* Conservative upper bound taken from zlib v1.2.1 source via lcl.c */
280 280
     c->comp_size = c->comp_size + ((c->comp_size + 7) >> 3) +
... ...
@@ -283,12 +283,12 @@ static av_cold int encode_init(AVCodecContext *avctx)
283 283
     /* Allocate compression buffer */
284 284
     if ((c->comp_buf = av_malloc(c->comp_size)) == NULL) {
285 285
         av_log(avctx, AV_LOG_ERROR, "Can't allocate compression buffer.\n");
286
-        return -1;
286
+        return AVERROR(ENOMEM);
287 287
     }
288 288
     c->pstride = FFALIGN(avctx->width, 16);
289 289
     if ((c->prev = av_malloc(c->pstride * avctx->height)) == NULL) {
290 290
         av_log(avctx, AV_LOG_ERROR, "Can't allocate picture.\n");
291
-        return -1;
291
+        return AVERROR(ENOMEM);
292 292
     }
293 293
 
294 294
     c->zstream.zalloc = Z_NULL;
... ...
@@ -138,6 +138,7 @@ static int dv_extract_audio(uint8_t* frame, uint8_t* ppcm[4],
138 138
         pcm = ppcm[ipcm++];
139 139
         if (!pcm)
140 140
             break;
141
+
141 142
         /* for each DIF segment */
142 143
         for (i = 0; i < sys->difseg_size; i++) {
143 144
             frame += 6 * 80; /* skip DIF segment header */
... ...
@@ -186,8 +187,6 @@ static int dv_extract_audio(uint8_t* frame, uint8_t* ppcm[4],
186 186
                 frame += 16 * 80; /* 15 Video DIFs + 1 Audio DIF */
187 187
             }
188 188
         }
189
-
190
-        /* next stereo channel (50Mbps and 100Mbps only) */
191 189
     }
192 190
 
193 191
     return size;
... ...
@@ -137,10 +137,7 @@ static int swf_read_packet(AVFormatContext *s, AVPacket *pkt)
137 137
             ast->codec->codec_id = ff_codec_get_id(swf_audio_codec_tags, (v>>4) & 15);
138 138
             ast->need_parsing = AVSTREAM_PARSE_FULL;
139 139
             sample_rate_code= (v>>2) & 3;
140
-            if (!sample_rate_code)
141
-                ast->codec->sample_rate = 5512;
142
-            else
143
-                ast->codec->sample_rate = 11025 << (sample_rate_code-1);
140
+            ast->codec->sample_rate = 44100 >> (3 - sample_rate_code);
144 141
             avpriv_set_pts_info(ast, 64, 1, ast->codec->sample_rate);
145 142
             len -= 4;
146 143
         } else if (tag == TAG_VIDEOFRAME) {
... ...
@@ -1736,8 +1736,6 @@ static void monoblack2Y_c(int16_t *dst, const uint8_t *src, const uint8_t *unuse
1736 1736
     }
1737 1737
 }
1738 1738
 
1739
-//FIXME yuy2* can read up to 7 samples too much
1740
-
1741 1739
 static void yuy2ToY_c(uint8_t *dst, const uint8_t *src, const uint8_t *unused1, const uint8_t *unused2,  int width,
1742 1740
                       uint32_t *unused)
1743 1741
 {
... ...
@@ -271,31 +271,28 @@ cglobal %2 %+ 24ToUV, 7, 7, %1, dstU, dstV, u1, src, u2, w, u3
271 271
 %endif ; ARCH_X86_64 && %0 == 3
272 272
 %endmacro
273 273
 
274
+; %1 = nr. of XMM registers for rgb-to-Y func
275
+; %2 = nr. of XMM registers for rgb-to-UV func
276
+%macro RGB24_FUNCS 2
277
+RGB24_TO_Y_FN %1, rgb
278
+RGB24_TO_Y_FN %1, bgr, rgb
279
+RGB24_TO_UV_FN %2, rgb
280
+RGB24_TO_UV_FN %2, bgr, rgb
281
+%endmacro
282
+
274 283
 %if ARCH_X86_32
275 284
 INIT_MMX mmx
276
-RGB24_TO_Y_FN 0, rgb
277
-RGB24_TO_Y_FN 0, bgr, rgb
278
-RGB24_TO_UV_FN 0, rgb
279
-RGB24_TO_UV_FN 0, bgr, rgb
285
+RGB24_FUNCS 0, 0
280 286
 %endif
281 287
 
282 288
 INIT_XMM sse2
283
-RGB24_TO_Y_FN 10, rgb
284
-RGB24_TO_Y_FN 10, bgr, rgb
285
-RGB24_TO_UV_FN 12, rgb
286
-RGB24_TO_UV_FN 12, bgr, rgb
289
+RGB24_FUNCS 10, 12
287 290
 
288 291
 INIT_XMM ssse3
289
-RGB24_TO_Y_FN 11, rgb
290
-RGB24_TO_Y_FN 11, bgr, rgb
291
-RGB24_TO_UV_FN 13, rgb
292
-RGB24_TO_UV_FN 13, bgr, rgb
292
+RGB24_FUNCS 11, 13
293 293
 
294 294
 INIT_XMM avx
295
-RGB24_TO_Y_FN 11, rgb
296
-RGB24_TO_Y_FN 11, bgr, rgb
297
-RGB24_TO_UV_FN 13, rgb
298
-RGB24_TO_UV_FN 13, bgr, rgb
295
+RGB24_FUNCS 11, 13
299 296
 
300 297
 ;-----------------------------------------------------------------------------
301 298
 ; YUYV/UYVY/NV12/NV21 packed pixel shuffling.
... ...
@@ -27,6 +27,8 @@
27 27
 #include "libavutil/cpu.h"
28 28
 #include "libavutil/pixdesc.h"
29 29
 
30
+#define DITHER1XBPP
31
+
30 32
 DECLARE_ASM_CONST(8, uint64_t, bF8)=       0xF8F8F8F8F8F8F8F8LL;
31 33
 DECLARE_ASM_CONST(8, uint64_t, bFC)=       0xFCFCFCFCFCFCFCFCLL;
32 34
 DECLARE_ASM_CONST(8, uint64_t, w10)=       0x0010001000100010LL;
... ...
@@ -1,6 +1,7 @@
1 1
 FATE_TESTS += fate-golomb
2 2
 fate-golomb: libavcodec/golomb-test$(EXESUF)
3 3
 fate-golomb: CMD = run libavcodec/golomb-test
4
+fate-golomb: REF = /dev/null
4 5
 
5 6
 FATE_TESTS += fate-iirfilter
6 7
 fate-iirfilter: libavcodec/iirfilter-test$(EXESUF)
7 8
deleted file mode 100644
... ...
@@ -1,2 +0,0 @@
1
-testing unsigned exp golomb
2
-testing signed exp golomb