Browse code

Merge remote-tracking branch 'qatar/master'

* qatar/master: (25 commits)
rtpenc: Add support for G726 audio
rtpdec: Interpret the different G726 names as bits_per_coded_sample
rtpenc: Change rtp_send_samples to handle sample sizes other than even bytes
rtpenc: Cast a rescaling parameter to int64_t
h264: cap max has_b_frames at MAX_DELAYED_PIC_COUNT - 1.
ARM: fix indentation in ff_dsputil_init_neon()
ARM: NEON put/avg_pixels8/16 cosmetics
ARM: add remaining NEON avg_pixels8/16 functions
ARM: clean up NEON put/avg_pixels macros
fate: split acodec-pcm into individual tests
swscale: #include "libavutil/mathematics.h"
pmpdec: don't use deprecated av_set_pts_info.
rv34: align temporary block of "dct" coefs
Add PlayStation Portable PMP format demuxer
proto: Realign struct initializers
proto: Use .priv_data_size to allocate the private context
mmsh: Properly clean up if the second ffurl_alloc failed
rtmp: Clean up properly if the handshake failed
md5proto: Remove the get_file_handle function
applehttpproto: Use the close function if the open function fails
...

Conflicts:
libavcodec/vble.c
libavformat/mmsh.c
libavformat/pmpdec.c
libavformat/udp.c
tests/ref/acodec/pcm

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

Michael Niedermayer authored on 2011/12/02 08:51:11
Showing 42 changed files
... ...
@@ -126,6 +126,7 @@ easier to use. The changes are:
126 126
 - IFF Amiga Continuous Bitmap (ACBM) decoder
127 127
 - ass filter
128 128
 - CRI ADX audio format demuxer
129
+- Playstation Portable PMP format demuxer
129 130
 
130 131
 
131 132
 version 0.8:
... ...
@@ -53,7 +53,19 @@ void ff_put_pixels8_y2_no_rnd_neon(uint8_t *, const uint8_t *, int, int);
53 53
 void ff_put_pixels8_xy2_no_rnd_neon(uint8_t *, const uint8_t *, int, int);
54 54
 
55 55
 void ff_avg_pixels16_neon(uint8_t *, const uint8_t *, int, int);
56
+void ff_avg_pixels16_x2_neon(uint8_t *, const uint8_t *, int, int);
57
+void ff_avg_pixels16_y2_neon(uint8_t *, const uint8_t *, int, int);
58
+void ff_avg_pixels16_xy2_neon(uint8_t *, const uint8_t *, int, int);
56 59
 void ff_avg_pixels8_neon(uint8_t *, const uint8_t *, int, int);
60
+void ff_avg_pixels8_x2_neon(uint8_t *, const uint8_t *, int, int);
61
+void ff_avg_pixels8_y2_neon(uint8_t *, const uint8_t *, int, int);
62
+void ff_avg_pixels8_xy2_neon(uint8_t *, const uint8_t *, int, int);
63
+void ff_avg_pixels16_x2_no_rnd_neon(uint8_t *, const uint8_t *, int, int);
64
+void ff_avg_pixels16_y2_no_rnd_neon(uint8_t *, const uint8_t *, int, int);
65
+void ff_avg_pixels16_xy2_no_rnd_neon(uint8_t *, const uint8_t *, int, int);
66
+void ff_avg_pixels8_x2_no_rnd_neon(uint8_t *, const uint8_t *, int, int);
67
+void ff_avg_pixels8_y2_no_rnd_neon(uint8_t *, const uint8_t *, int, int);
68
+void ff_avg_pixels8_xy2_no_rnd_neon(uint8_t *, const uint8_t *, int, int);
57 69
 
58 70
 void ff_add_pixels_clamped_neon(const DCTELEM *, uint8_t *, int);
59 71
 void ff_put_pixels_clamped_neon(const DCTELEM *, uint8_t *, int);
... ...
@@ -189,37 +201,51 @@ void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx)
189 189
     }
190 190
 
191 191
     if (!high_bit_depth) {
192
-    c->clear_block  = ff_clear_block_neon;
193
-    c->clear_blocks = ff_clear_blocks_neon;
194
-
195
-    c->put_pixels_tab[0][0] = ff_put_pixels16_neon;
196
-    c->put_pixels_tab[0][1] = ff_put_pixels16_x2_neon;
197
-    c->put_pixels_tab[0][2] = ff_put_pixels16_y2_neon;
198
-    c->put_pixels_tab[0][3] = ff_put_pixels16_xy2_neon;
199
-    c->put_pixels_tab[1][0] = ff_put_pixels8_neon;
200
-    c->put_pixels_tab[1][1] = ff_put_pixels8_x2_neon;
201
-    c->put_pixels_tab[1][2] = ff_put_pixels8_y2_neon;
202
-    c->put_pixels_tab[1][3] = ff_put_pixels8_xy2_neon;
203
-
204
-    c->put_no_rnd_pixels_tab[0][0] = ff_put_pixels16_neon;
205
-    c->put_no_rnd_pixels_tab[0][1] = ff_put_pixels16_x2_no_rnd_neon;
206
-    c->put_no_rnd_pixels_tab[0][2] = ff_put_pixels16_y2_no_rnd_neon;
207
-    c->put_no_rnd_pixels_tab[0][3] = ff_put_pixels16_xy2_no_rnd_neon;
208
-    c->put_no_rnd_pixels_tab[1][0] = ff_put_pixels8_neon;
209
-    c->put_no_rnd_pixels_tab[1][1] = ff_put_pixels8_x2_no_rnd_neon;
210
-    c->put_no_rnd_pixels_tab[1][2] = ff_put_pixels8_y2_no_rnd_neon;
211
-    c->put_no_rnd_pixels_tab[1][3] = ff_put_pixels8_xy2_no_rnd_neon;
212
-
213
-    c->avg_pixels_tab[0][0] = ff_avg_pixels16_neon;
214
-    c->avg_pixels_tab[1][0] = ff_avg_pixels8_neon;
192
+        c->clear_block  = ff_clear_block_neon;
193
+        c->clear_blocks = ff_clear_blocks_neon;
194
+
195
+        c->put_pixels_tab[0][0] = ff_put_pixels16_neon;
196
+        c->put_pixels_tab[0][1] = ff_put_pixels16_x2_neon;
197
+        c->put_pixels_tab[0][2] = ff_put_pixels16_y2_neon;
198
+        c->put_pixels_tab[0][3] = ff_put_pixels16_xy2_neon;
199
+        c->put_pixels_tab[1][0] = ff_put_pixels8_neon;
200
+        c->put_pixels_tab[1][1] = ff_put_pixels8_x2_neon;
201
+        c->put_pixels_tab[1][2] = ff_put_pixels8_y2_neon;
202
+        c->put_pixels_tab[1][3] = ff_put_pixels8_xy2_neon;
203
+
204
+        c->put_no_rnd_pixels_tab[0][0] = ff_put_pixels16_neon;
205
+        c->put_no_rnd_pixels_tab[0][1] = ff_put_pixels16_x2_no_rnd_neon;
206
+        c->put_no_rnd_pixels_tab[0][2] = ff_put_pixels16_y2_no_rnd_neon;
207
+        c->put_no_rnd_pixels_tab[0][3] = ff_put_pixels16_xy2_no_rnd_neon;
208
+        c->put_no_rnd_pixels_tab[1][0] = ff_put_pixels8_neon;
209
+        c->put_no_rnd_pixels_tab[1][1] = ff_put_pixels8_x2_no_rnd_neon;
210
+        c->put_no_rnd_pixels_tab[1][2] = ff_put_pixels8_y2_no_rnd_neon;
211
+        c->put_no_rnd_pixels_tab[1][3] = ff_put_pixels8_xy2_no_rnd_neon;
212
+
213
+        c->avg_pixels_tab[0][0] = ff_avg_pixels16_neon;
214
+        c->avg_pixels_tab[0][1] = ff_avg_pixels16_x2_neon;
215
+        c->avg_pixels_tab[0][2] = ff_avg_pixels16_y2_neon;
216
+        c->avg_pixels_tab[0][3] = ff_avg_pixels16_xy2_neon;
217
+        c->avg_pixels_tab[1][0] = ff_avg_pixels8_neon;
218
+        c->avg_pixels_tab[1][1] = ff_avg_pixels8_x2_neon;
219
+        c->avg_pixels_tab[1][2] = ff_avg_pixels8_y2_neon;
220
+        c->avg_pixels_tab[1][3] = ff_avg_pixels8_xy2_neon;
221
+
222
+        c->avg_no_rnd_pixels_tab[0][0] = ff_avg_pixels16_neon;
223
+        c->avg_no_rnd_pixels_tab[0][1] = ff_avg_pixels16_x2_no_rnd_neon;
224
+        c->avg_no_rnd_pixels_tab[0][2] = ff_avg_pixels16_y2_no_rnd_neon;
225
+        c->avg_no_rnd_pixels_tab[0][3] = ff_avg_pixels16_xy2_no_rnd_neon;
226
+        c->avg_no_rnd_pixels_tab[1][0] = ff_avg_pixels8_neon;
227
+        c->avg_no_rnd_pixels_tab[1][1] = ff_avg_pixels8_x2_no_rnd_neon;
228
+        c->avg_no_rnd_pixels_tab[1][2] = ff_avg_pixels8_y2_no_rnd_neon;
229
+        c->avg_no_rnd_pixels_tab[1][3] = ff_avg_pixels8_xy2_no_rnd_neon;
215 230
     }
216 231
 
217 232
     c->add_pixels_clamped = ff_add_pixels_clamped_neon;
218 233
     c->put_pixels_clamped = ff_put_pixels_clamped_neon;
219 234
     c->put_signed_pixels_clamped = ff_put_signed_pixels_clamped_neon;
220 235
 
221
-    if (CONFIG_H264_DECODER) {
222
-        if (!high_bit_depth) {
236
+    if (CONFIG_H264_DECODER && !high_bit_depth) {
223 237
         c->put_h264_chroma_pixels_tab[0] = ff_put_h264_chroma_mc8_neon;
224 238
         c->put_h264_chroma_pixels_tab[1] = ff_put_h264_chroma_mc4_neon;
225 239
         c->put_h264_chroma_pixels_tab[2] = ff_put_h264_chroma_mc2_neon;
... ...
@@ -295,7 +321,6 @@ void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx)
295 295
         c->avg_h264_qpel_pixels_tab[1][13] = ff_avg_h264_qpel8_mc13_neon;
296 296
         c->avg_h264_qpel_pixels_tab[1][14] = ff_avg_h264_qpel8_mc23_neon;
297 297
         c->avg_h264_qpel_pixels_tab[1][15] = ff_avg_h264_qpel8_mc33_neon;
298
-        }
299 298
     }
300 299
 
301 300
     if (CONFIG_VP3_DECODER) {
... ...
@@ -40,75 +40,89 @@ function ff_clear_blocks_neon, export=1
40 40
         bx              lr
41 41
 endfunc
42 42
 
43
-        .macro pixels16 avg=0
44
-.if \avg
45
-        mov             ip,  r0
46
-.endif
47
-1:      vld1.64         {d0, d1},  [r1], r2
48
-        vld1.64         {d2, d3},  [r1], r2
49
-        vld1.64         {d4, d5},  [r1], r2
43
+.macro  pixels16        rnd=1, avg=0
44
+  .if \avg
45
+        mov             r12, r0
46
+  .endif
47
+1:      vld1.64         {q0},     [r1], r2
48
+        vld1.64         {q1},     [r1], r2
49
+        vld1.64         {q2},     [r1], r2
50 50
         pld             [r1, r2, lsl #2]
51
-        vld1.64         {d6, d7},  [r1], r2
51
+        vld1.64         {q3},     [r1], r2
52 52
         pld             [r1]
53 53
         pld             [r1, r2]
54 54
         pld             [r1, r2, lsl #1]
55
-.if \avg
56
-        vld1.64         {d16,d17}, [ip,:128], r2
55
+  .if \avg
56
+        vld1.64         {q8},     [r12,:128], r2
57 57
         vrhadd.u8       q0,  q0,  q8
58
-        vld1.64         {d18,d19}, [ip,:128], r2
58
+        vld1.64         {q9},     [r12,:128], r2
59 59
         vrhadd.u8       q1,  q1,  q9
60
-        vld1.64         {d20,d21}, [ip,:128], r2
60
+        vld1.64         {q10},    [r12,:128], r2
61 61
         vrhadd.u8       q2,  q2,  q10
62
-        vld1.64         {d22,d23}, [ip,:128], r2
62
+        vld1.64         {q11},    [r12,:128], r2
63 63
         vrhadd.u8       q3,  q3,  q11
64
-.endif
64
+  .endif
65 65
         subs            r3,  r3,  #4
66
-        vst1.64         {d0, d1},  [r0,:128], r2
67
-        vst1.64         {d2, d3},  [r0,:128], r2
68
-        vst1.64         {d4, d5},  [r0,:128], r2
69
-        vst1.64         {d6, d7},  [r0,:128], r2
66
+        vst1.64         {q0},     [r0,:128], r2
67
+        vst1.64         {q1},     [r0,:128], r2
68
+        vst1.64         {q2},     [r0,:128], r2
69
+        vst1.64         {q3},     [r0,:128], r2
70 70
         bne             1b
71 71
         bx              lr
72
-        .endm
72
+.endm
73 73
 
74
-        .macro pixels16_x2 vhadd=vrhadd.u8
75
-1:      vld1.64         {d0-d2},   [r1], r2
76
-        vld1.64         {d4-d6},   [r1], r2
74
+.macro  pixels16_x2     rnd=1, avg=0
75
+1:      vld1.64         {d0-d2},  [r1], r2
76
+        vld1.64         {d4-d6},  [r1], r2
77 77
         pld             [r1]
78 78
         pld             [r1, r2]
79 79
         subs            r3,  r3,  #2
80 80
         vext.8          q1,  q0,  q1,  #1
81
-        \vhadd          q0,  q0,  q1
81
+        avg             q0,  q0,  q1
82 82
         vext.8          q3,  q2,  q3,  #1
83
-        \vhadd          q2,  q2,  q3
84
-        vst1.64         {d0, d1},  [r0,:128], r2
85
-        vst1.64         {d4, d5},  [r0,:128], r2
83
+        avg             q2,  q2,  q3
84
+  .if \avg
85
+        vld1.8          {q1},     [r0,:128], r2
86
+        vld1.8          {q3},     [r0,:128]
87
+        vrhadd.u8       q0,  q0,  q1
88
+        vrhadd.u8       q2,  q2,  q3
89
+        sub             r0,  r0,  r2
90
+  .endif
91
+        vst1.64         {q0},     [r0,:128], r2
92
+        vst1.64         {q2},     [r0,:128], r2
86 93
         bne             1b
87 94
         bx              lr
88
-        .endm
95
+.endm
89 96
 
90
-        .macro pixels16_y2 vhadd=vrhadd.u8
91
-        vld1.64         {d0, d1},  [r1], r2
92
-        vld1.64         {d2, d3},  [r1], r2
97
+.macro  pixels16_y2     rnd=1, avg=0
98
+        vld1.64         {q0},     [r1], r2
99
+        vld1.64         {q1},     [r1], r2
93 100
 1:      subs            r3,  r3,  #2
94
-        \vhadd          q2,  q0,  q1
95
-        vld1.64         {d0, d1},  [r1], r2
96
-        \vhadd          q3,  q0,  q1
97
-        vld1.64         {d2, d3},  [r1], r2
101
+        avg             q2,  q0,  q1
102
+        vld1.64         {q0},     [r1], r2
103
+        avg             q3,  q0,  q1
104
+        vld1.64         {q1},     [r1], r2
98 105
         pld             [r1]
99 106
         pld             [r1, r2]
100
-        vst1.64         {d4, d5},  [r0,:128], r2
101
-        vst1.64         {d6, d7},  [r0,:128], r2
107
+  .if \avg
108
+        vld1.8          {q8},     [r0,:128], r2
109
+        vld1.8          {q9},     [r0,:128]
110
+        vrhadd.u8       q2,  q2,  q8
111
+        vrhadd.u8       q3,  q3,  q9
112
+        sub             r0,  r0,  r2
113
+  .endif
114
+        vst1.64         {q2},     [r0,:128], r2
115
+        vst1.64         {q3},     [r0,:128], r2
102 116
         bne             1b
103 117
         bx              lr
104
-        .endm
118
+.endm
105 119
 
106
-        .macro pixels16_xy2 vshrn=vrshrn.u16 no_rnd=0
107
-        vld1.64         {d0-d2},   [r1], r2
108
-        vld1.64         {d4-d6},   [r1], r2
109
-.if \no_rnd
120
+.macro  pixels16_xy2    rnd=1, avg=0
121
+        vld1.64         {d0-d2},  [r1], r2
122
+        vld1.64         {d4-d6},  [r1], r2
123
+  .ifeq \rnd
110 124
         vmov.i16        q13, #1
111
-.endif
125
+  .endif
112 126
         pld             [r1]
113 127
         pld             [r1, r2]
114 128
         vext.8          q1,  q0,  q1,  #1
... ...
@@ -118,109 +132,129 @@ endfunc
118 118
         vaddl.u8        q9,  d4,  d6
119 119
         vaddl.u8        q11, d5,  d7
120 120
 1:      subs            r3,  r3,  #2
121
-        vld1.64         {d0-d2},   [r1], r2
121
+        vld1.64         {d0-d2},  [r1], r2
122 122
         vadd.u16        q12, q8,  q9
123 123
         pld             [r1]
124
-.if \no_rnd
124
+  .ifeq \rnd
125 125
         vadd.u16        q12, q12, q13
126
-.endif
126
+  .endif
127 127
         vext.8          q15, q0,  q1,  #1
128 128
         vadd.u16        q1 , q10, q11
129
-        \vshrn          d28, q12, #2
130
-.if \no_rnd
129
+        shrn            d28, q12, #2
130
+  .ifeq \rnd
131 131
         vadd.u16        q1,  q1,  q13
132
-.endif
133
-        \vshrn          d29, q1,  #2
132
+  .endif
133
+        shrn            d29, q1,  #2
134
+  .if \avg
135
+        vld1.8          {q8},     [r0,:128]
136
+        vrhadd.u8       q14, q14, q8
137
+  .endif
134 138
         vaddl.u8        q8,  d0,  d30
135
-        vld1.64         {d2-d4},   [r1], r2
139
+        vld1.64         {d2-d4},  [r1], r2
136 140
         vaddl.u8        q10, d1,  d31
137
-        vst1.64         {d28,d29}, [r0,:128], r2
141
+        vst1.64         {q14},    [r0,:128], r2
138 142
         vadd.u16        q12, q8,  q9
139 143
         pld             [r1, r2]
140
-.if \no_rnd
144
+  .ifeq \rnd
141 145
         vadd.u16        q12, q12, q13
142
-.endif
146
+  .endif
143 147
         vext.8          q2,  q1,  q2,  #1
144 148
         vadd.u16        q0,  q10, q11
145
-        \vshrn          d30, q12, #2
146
-.if \no_rnd
149
+        shrn            d30, q12, #2
150
+  .ifeq \rnd
147 151
         vadd.u16        q0,  q0,  q13
148
-.endif
149
-        \vshrn          d31, q0,  #2
152
+  .endif
153
+        shrn            d31, q0,  #2
154
+  .if \avg
155
+        vld1.8          {q9},     [r0,:128]
156
+        vrhadd.u8       q15, q15, q9
157
+  .endif
150 158
         vaddl.u8        q9,  d2,  d4
151 159
         vaddl.u8        q11, d3,  d5
152
-        vst1.64         {d30,d31}, [r0,:128], r2
160
+        vst1.64         {q15},    [r0,:128], r2
153 161
         bgt             1b
154 162
         bx              lr
155
-        .endm
163
+.endm
156 164
 
157
-        .macro pixels8 avg=0
158
-1:      vld1.64         {d0}, [r1], r2
159
-        vld1.64         {d1}, [r1], r2
160
-        vld1.64         {d2}, [r1], r2
165
+.macro  pixels8         rnd=1, avg=0
166
+1:      vld1.64         {d0},     [r1], r2
167
+        vld1.64         {d1},     [r1], r2
168
+        vld1.64         {d2},     [r1], r2
161 169
         pld             [r1, r2, lsl #2]
162
-        vld1.64         {d3}, [r1], r2
170
+        vld1.64         {d3},     [r1], r2
163 171
         pld             [r1]
164 172
         pld             [r1, r2]
165 173
         pld             [r1, r2, lsl #1]
166
-.if \avg
167
-        vld1.64         {d4}, [r0,:64], r2
174
+  .if \avg
175
+        vld1.64         {d4},     [r0,:64], r2
168 176
         vrhadd.u8       d0,  d0,  d4
169
-        vld1.64         {d5}, [r0,:64], r2
177
+        vld1.64         {d5},     [r0,:64], r2
170 178
         vrhadd.u8       d1,  d1,  d5
171
-        vld1.64         {d6}, [r0,:64], r2
179
+        vld1.64         {d6},     [r0,:64], r2
172 180
         vrhadd.u8       d2,  d2,  d6
173
-        vld1.64         {d7}, [r0,:64], r2
181
+        vld1.64         {d7},     [r0,:64], r2
174 182
         vrhadd.u8       d3,  d3,  d7
175 183
         sub             r0,  r0,  r2,  lsl #2
176
-.endif
184
+  .endif
177 185
         subs            r3,  r3,  #4
178
-        vst1.64         {d0}, [r0,:64], r2
179
-        vst1.64         {d1}, [r0,:64], r2
180
-        vst1.64         {d2}, [r0,:64], r2
181
-        vst1.64         {d3}, [r0,:64], r2
186
+        vst1.64         {d0},     [r0,:64], r2
187
+        vst1.64         {d1},     [r0,:64], r2
188
+        vst1.64         {d2},     [r0,:64], r2
189
+        vst1.64         {d3},     [r0,:64], r2
182 190
         bne             1b
183 191
         bx              lr
184
-        .endm
192
+.endm
185 193
 
186
-        .macro pixels8_x2 vhadd=vrhadd.u8
187
-1:      vld1.64         {d0, d1},  [r1], r2
194
+.macro  pixels8_x2      rnd=1, avg=0
195
+1:      vld1.64         {q0},     [r1], r2
188 196
         vext.8          d1,  d0,  d1,  #1
189
-        vld1.64         {d2, d3},  [r1], r2
197
+        vld1.64         {q1},     [r1], r2
190 198
         vext.8          d3,  d2,  d3,  #1
191 199
         pld             [r1]
192 200
         pld             [r1, r2]
193 201
         subs            r3,  r3,  #2
194 202
         vswp            d1,  d2
195
-        \vhadd          q0,  q0,  q1
196
-        vst1.64         {d0},      [r0,:64], r2
197
-        vst1.64         {d1},      [r0,:64], r2
203
+        avg             q0,  q0,  q1
204
+  .if \avg
205
+        vld1.8          {d4},     [r0,:64], r2
206
+        vld1.8          {d5},     [r0,:64]
207
+        vrhadd.u8       q0,  q0,  q2
208
+        sub             r0,  r0,  r2
209
+  .endif
210
+        vst1.64         {d0},     [r0,:64], r2
211
+        vst1.64         {d1},     [r0,:64], r2
198 212
         bne             1b
199 213
         bx              lr
200
-        .endm
214
+.endm
201 215
 
202
-        .macro pixels8_y2 vhadd=vrhadd.u8
203
-        vld1.64         {d0},      [r1], r2
204
-        vld1.64         {d1},      [r1], r2
216
+.macro  pixels8_y2      rnd=1, avg=0
217
+        vld1.64         {d0},     [r1], r2
218
+        vld1.64         {d1},     [r1], r2
205 219
 1:      subs            r3,  r3,  #2
206
-        \vhadd          d4,  d0,  d1
207
-        vld1.64         {d0},      [r1], r2
208
-        \vhadd          d5,  d0,  d1
209
-        vld1.64         {d1},      [r1], r2
220
+        avg             d4,  d0,  d1
221
+        vld1.64         {d0},     [r1], r2
222
+        avg             d5,  d0,  d1
223
+        vld1.64         {d1},     [r1], r2
210 224
         pld             [r1]
211 225
         pld             [r1, r2]
212
-        vst1.64         {d4},      [r0,:64], r2
213
-        vst1.64         {d5},      [r0,:64], r2
226
+  .if \avg
227
+        vld1.8          {d2},     [r0,:64], r2
228
+        vld1.8          {d3},     [r0,:64]
229
+        vrhadd.u8       q2,  q2,  q1
230
+        sub             r0,  r0,  r2
231
+  .endif
232
+        vst1.64         {d4},     [r0,:64], r2
233
+        vst1.64         {d5},     [r0,:64], r2
214 234
         bne             1b
215 235
         bx              lr
216
-        .endm
236
+.endm
217 237
 
218
-        .macro pixels8_xy2 vshrn=vrshrn.u16 no_rnd=0
219
-        vld1.64         {d0, d1},  [r1], r2
220
-        vld1.64         {d2, d3},  [r1], r2
221
-.if \no_rnd
238
+.macro  pixels8_xy2     rnd=1, avg=0
239
+        vld1.64         {q0},     [r1], r2
240
+        vld1.64         {q1},     [r1], r2
241
+  .ifeq \rnd
222 242
         vmov.i16        q11, #1
223
-.endif
243
+  .endif
224 244
         pld             [r1]
225 245
         pld             [r1, r2]
226 246
         vext.8          d4,  d0,  d1,  #1
... ...
@@ -228,70 +262,101 @@ endfunc
228 228
         vaddl.u8        q8,  d0,  d4
229 229
         vaddl.u8        q9,  d2,  d6
230 230
 1:      subs            r3,  r3,  #2
231
-        vld1.64         {d0, d1},  [r1], r2
231
+        vld1.64         {q0},     [r1], r2
232 232
         pld             [r1]
233 233
         vadd.u16        q10, q8,  q9
234 234
         vext.8          d4,  d0,  d1,  #1
235
-.if \no_rnd
235
+  .ifeq \rnd
236 236
         vadd.u16        q10, q10, q11
237
-.endif
237
+  .endif
238 238
         vaddl.u8        q8,  d0,  d4
239
-        \vshrn          d5,  q10, #2
240
-        vld1.64         {d2, d3},  [r1], r2
239
+        shrn            d5,  q10, #2
240
+        vld1.64         {q1},     [r1], r2
241 241
         vadd.u16        q10, q8,  q9
242 242
         pld             [r1, r2]
243
-.if \no_rnd
243
+  .if \avg
244
+        vld1.8          {d7},     [r0,:64]
245
+        vrhadd.u8       d5,  d5,  d7
246
+  .endif
247
+  .ifeq \rnd
244 248
         vadd.u16        q10, q10, q11
245
-.endif
246
-        vst1.64         {d5},      [r0,:64], r2
247
-        \vshrn          d7,  q10, #2
249
+  .endif
250
+        vst1.64         {d5},     [r0,:64], r2
251
+        shrn            d7,  q10, #2
252
+  .if \avg
253
+        vld1.8          {d5},     [r0,:64]
254
+        vrhadd.u8       d7,  d7,  d5
255
+  .endif
248 256
         vext.8          d6,  d2,  d3,  #1
249 257
         vaddl.u8        q9,  d2,  d6
250
-        vst1.64         {d7},      [r0,:64], r2
258
+        vst1.64         {d7},     [r0,:64], r2
251 259
         bgt             1b
252 260
         bx              lr
253
-        .endm
254
-
255
-        .macro pixfunc pfx name suf rnd_op args:vararg
261
+.endm
262
+
263
+.macro  pixfunc         pfx, name, suf, rnd=1, avg=0
264
+  .if \rnd
265
+    .macro avg  rd, rn, rm
266
+        vrhadd.u8       \rd, \rn, \rm
267
+    .endm
268
+    .macro shrn rd, rn, rm
269
+        vrshrn.u16      \rd, \rn, \rm
270
+    .endm
271
+  .else
272
+    .macro avg  rd, rn, rm
273
+        vhadd.u8        \rd, \rn, \rm
274
+    .endm
275
+    .macro shrn rd, rn, rm
276
+        vshrn.u16       \rd, \rn, \rm
277
+    .endm
278
+  .endif
256 279
 function ff_\pfx\name\suf\()_neon, export=1
257
-        \name \rnd_op \args
280
+        \name           \rnd, \avg
258 281
 endfunc
259
-        .endm
282
+        .purgem         avg
283
+        .purgem         shrn
284
+.endm
260 285
 
261
-        .macro pixfunc2 pfx name args:vararg
262
-        pixfunc \pfx \name
263
-        pixfunc \pfx \name \args
264
-        .endm
286
+.macro  pixfunc2        pfx, name, avg=0
287
+        pixfunc         \pfx, \name,          rnd=1, avg=\avg
288
+        pixfunc         \pfx, \name, _no_rnd, rnd=0, avg=\avg
289
+.endm
265 290
 
266 291
 function ff_put_h264_qpel16_mc00_neon, export=1
267 292
         mov             r3,  #16
268 293
 endfunc
269 294
 
270
-        pixfunc  put_ pixels16
271
-        pixfunc2 put_ pixels16_x2,  _no_rnd, vhadd.u8
272
-        pixfunc2 put_ pixels16_y2,  _no_rnd, vhadd.u8
273
-        pixfunc2 put_ pixels16_xy2, _no_rnd, vshrn.u16, 1
295
+        pixfunc         put_, pixels16,     avg=0
296
+        pixfunc2        put_, pixels16_x2,  avg=0
297
+        pixfunc2        put_, pixels16_y2,  avg=0
298
+        pixfunc2        put_, pixels16_xy2, avg=0
274 299
 
275 300
 function ff_avg_h264_qpel16_mc00_neon, export=1
276 301
         mov             r3,  #16
277 302
 endfunc
278 303
 
279
-        pixfunc  avg_ pixels16,, 1
304
+        pixfunc         avg_, pixels16,     avg=1
305
+        pixfunc2        avg_, pixels16_x2,  avg=1
306
+        pixfunc2        avg_, pixels16_y2,  avg=1
307
+        pixfunc2        avg_, pixels16_xy2, avg=1
280 308
 
281 309
 function ff_put_h264_qpel8_mc00_neon, export=1
282 310
         mov             r3,  #8
283 311
 endfunc
284 312
 
285
-        pixfunc  put_ pixels8
286
-        pixfunc2 put_ pixels8_x2,   _no_rnd, vhadd.u8
287
-        pixfunc2 put_ pixels8_y2,   _no_rnd, vhadd.u8
288
-        pixfunc2 put_ pixels8_xy2,  _no_rnd, vshrn.u16, 1
313
+        pixfunc         put_, pixels8,     avg=0
314
+        pixfunc2        put_, pixels8_x2,  avg=0
315
+        pixfunc2        put_, pixels8_y2,  avg=0
316
+        pixfunc2        put_, pixels8_xy2, avg=0
289 317
 
290 318
 function ff_avg_h264_qpel8_mc00_neon, export=1
291 319
         mov             r3,  #8
292 320
 endfunc
293 321
 
294
-        pixfunc  avg_ pixels8,, 1
322
+        pixfunc         avg_, pixels8,     avg=1
323
+        pixfunc2        avg_, pixels8_x2,  avg=1
324
+        pixfunc2        avg_, pixels8_y2,  avg=1
325
+        pixfunc2        avg_, pixels8_xy2, avg=1
295 326
 
296 327
 function ff_put_pixels_clamped_neon, export=1
297 328
         vld1.64         {d16-d19}, [r0,:128]!
... ...
@@ -1471,7 +1471,7 @@ static void decode_postinit(H264Context *h, int setup_finished){
1471 1471
 
1472 1472
     if(   s->avctx->strict_std_compliance >= FF_COMPLIANCE_STRICT
1473 1473
        && !h->sps.bitstream_restriction_flag){
1474
-        s->avctx->has_b_frames= MAX_DELAYED_PIC_COUNT;
1474
+        s->avctx->has_b_frames = MAX_DELAYED_PIC_COUNT - 1;
1475 1475
         s->low_delay= 0;
1476 1476
     }
1477 1477
 
... ...
@@ -1112,7 +1112,7 @@ static int rv34_decode_macroblock(RV34DecContext *r, int8_t *intra_types)
1112 1112
     GetBitContext *gb = &s->gb;
1113 1113
     int cbp, cbp2;
1114 1114
     int i, blknum, blkoff;
1115
-    DCTELEM block16[64];
1115
+    LOCAL_ALIGNED_16(DCTELEM, block16, [64]);
1116 1116
     int luma_dc_quant;
1117 1117
     int dist;
1118 1118
     int mb_pos = s->mb_x + s->mb_y * s->mb_stride;
... ...
@@ -1147,7 +1147,7 @@ static int rv34_decode_macroblock(RV34DecContext *r, int8_t *intra_types)
1147 1147
 
1148 1148
     luma_dc_quant = r->block_type == RV34_MB_P_MIX16x16 ? r->luma_dc_quant_p[s->qscale] : r->luma_dc_quant_i[s->qscale];
1149 1149
     if(r->is16){
1150
-        memset(block16, 0, sizeof(block16));
1150
+        memset(block16, 0, 64 * sizeof(*block16));
1151 1151
         rv34_decode_block(block16, gb, r->cur_vlcs, 3, 0);
1152 1152
         rv34_dequant4x4_16x16(block16, rv34_qscale_tab[luma_dc_quant],rv34_qscale_tab[s->qscale]);
1153 1153
         r->rdsp.rv34_inv_transform_tab[1](block16);
... ...
@@ -174,19 +174,25 @@ fail:
174 174
     return ret;
175 175
 }
176 176
 
177
+static int applehttp_close(URLContext *h)
178
+{
179
+    AppleHTTPContext *s = h->priv_data;
180
+
181
+    free_segment_list(s);
182
+    free_variant_list(s);
183
+    ffurl_close(s->seg_hd);
184
+    return 0;
185
+}
186
+
177 187
 static int applehttp_open(URLContext *h, const char *uri, int flags)
178 188
 {
179
-    AppleHTTPContext *s;
189
+    AppleHTTPContext *s = h->priv_data;
180 190
     int ret, i;
181 191
     const char *nested_url;
182 192
 
183 193
     if (flags & AVIO_FLAG_WRITE)
184 194
         return AVERROR(ENOSYS);
185 195
 
186
-    s = av_mallocz(sizeof(AppleHTTPContext));
187
-    if (!s)
188
-        return AVERROR(ENOMEM);
189
-    h->priv_data = s;
190 196
     h->is_streamed = 1;
191 197
 
192 198
     if (av_strstart(uri, "applehttp+", &nested_url)) {
... ...
@@ -229,7 +235,7 @@ static int applehttp_open(URLContext *h, const char *uri, int flags)
229 229
     return 0;
230 230
 
231 231
 fail:
232
-    av_free(s);
232
+    applehttp_close(h);
233 233
     return ret;
234 234
 }
235 235
 
... ...
@@ -287,21 +293,11 @@ retry:
287 287
     goto start;
288 288
 }
289 289
 
290
-static int applehttp_close(URLContext *h)
291
-{
292
-    AppleHTTPContext *s = h->priv_data;
293
-
294
-    free_segment_list(s);
295
-    free_variant_list(s);
296
-    ffurl_close(s->seg_hd);
297
-    av_free(s);
298
-    return 0;
299
-}
300
-
301 290
 URLProtocol ff_applehttp_protocol = {
302
-    .name      = "applehttp",
303
-    .url_open  = applehttp_open,
304
-    .url_read  = applehttp_read,
305
-    .url_close = applehttp_close,
306
-    .flags     = URL_PROTOCOL_FLAG_NESTED_SCHEME,
291
+    .name           = "applehttp",
292
+    .url_open       = applehttp_open,
293
+    .url_read       = applehttp_read,
294
+    .url_close      = applehttp_close,
295
+    .flags          = URL_PROTOCOL_FLAG_NESTED_SCHEME,
296
+    .priv_data_size = sizeof(AppleHTTPContext),
307 297
 };
... ...
@@ -53,13 +53,7 @@ static int cache_open(URLContext *h, const char *arg, int flags)
53 53
 {
54 54
     int access;
55 55
     const char *buffername;
56
-    Context *c;
57
-
58
-    c = av_mallocz(sizeof(Context));
59
-    if (!c) {
60
-        return AVERROR(ENOMEM);
61
-    }
62
-    h->priv_data = c;
56
+    Context *c= h->priv_data;
63 57
 
64 58
     av_strstart(arg, "cache:", &arg);
65 59
 
... ...
@@ -130,8 +124,6 @@ static int cache_close(URLContext *h)
130 130
     close(c->fd);
131 131
     ffurl_close(c->inner);
132 132
 
133
-    av_freep(&h->priv_data);
134
-
135 133
     return 0;
136 134
 }
137 135
 
... ...
@@ -141,4 +133,5 @@ URLProtocol ff_cache_protocol = {
141 141
     .url_read            = cache_read,
142 142
     .url_seek            = cache_seek,
143 143
     .url_close           = cache_close,
144
+    .priv_data_size      = sizeof(Context),
144 145
 };
... ...
@@ -50,7 +50,6 @@ static av_cold int concat_close(URLContext *h)
50 50
         err |= ffurl_close(nodes[i].uc);
51 51
 
52 52
     av_freep(&data->nodes);
53
-    av_freep(&h->priv_data);
54 53
 
55 54
     return err < 0 ? -1 : 0;
56 55
 }
... ...
@@ -62,16 +61,11 @@ static av_cold int concat_open(URLContext *h, const char *uri, int flags)
62 62
     int64_t size;
63 63
     size_t  len, i;
64 64
     URLContext *uc;
65
-    struct concat_data  *data;
65
+    struct concat_data  *data = h->priv_data;
66 66
     struct concat_nodes *nodes;
67 67
 
68 68
     av_strstart(uri, "concat:", &uri);
69 69
 
70
-    /* creating data */
71
-    if (!(data = av_mallocz(sizeof(*data))))
72
-        return AVERROR(ENOMEM);
73
-    h->priv_data = data;
74
-
75 70
     for (i = 0, len = 1; uri[i]; i++)
76 71
         if (uri[i] == *AV_CAT_SEPARATOR)
77 72
             /* integer overflow */
... ...
@@ -81,7 +75,6 @@ static av_cold int concat_open(URLContext *h, const char *uri, int flags)
81 81
             }
82 82
 
83 83
     if (!(nodes = av_malloc(sizeof(*nodes) * len))) {
84
-        av_freep(&h->priv_data);
85 84
         return AVERROR(ENOMEM);
86 85
     } else
87 86
         data->nodes = nodes;
... ...
@@ -191,9 +184,10 @@ static int64_t concat_seek(URLContext *h, int64_t pos, int whence)
191 191
 }
192 192
 
193 193
 URLProtocol ff_concat_protocol = {
194
-    .name      = "concat",
195
-    .url_open  = concat_open,
196
-    .url_read  = concat_read,
197
-    .url_seek  = concat_seek,
198
-    .url_close = concat_close,
194
+    .name           = "concat",
195
+    .url_open       = concat_open,
196
+    .url_read       = concat_read,
197
+    .url_seek       = concat_seek,
198
+    .url_close      = concat_close,
199
+    .priv_data_size = sizeof(struct concat_data),
199 200
 };
... ...
@@ -72,24 +72,17 @@ static int gopher_close(URLContext *h)
72 72
         ffurl_close(s->hd);
73 73
         s->hd = NULL;
74 74
     }
75
-    av_freep(&h->priv_data);
76 75
     return 0;
77 76
 }
78 77
 
79 78
 static int gopher_open(URLContext *h, const char *uri, int flags)
80 79
 {
81
-    GopherContext *s;
80
+    GopherContext *s = h->priv_data;
82 81
     char hostname[1024], auth[1024], path[1024], buf[1024];
83 82
     int port, err;
84 83
 
85 84
     h->is_streamed = 1;
86 85
 
87
-    s = av_malloc(sizeof(GopherContext));
88
-    if (!s) {
89
-        return AVERROR(ENOMEM);
90
-    }
91
-    h->priv_data = s;
92
-
93 86
     /* needed in any case to build the host string */
94 87
     av_url_split(NULL, 0, auth, sizeof(auth), hostname, sizeof(hostname), &port,
95 88
                  path, sizeof(path), uri);
... ...
@@ -122,9 +115,10 @@ static int gopher_read(URLContext *h, uint8_t *buf, int size)
122 122
 
123 123
 
124 124
 URLProtocol ff_gopher_protocol = {
125
-    .name      = "gopher",
126
-    .url_open  = gopher_open,
127
-    .url_read  = gopher_read,
128
-    .url_write = gopher_write,
129
-    .url_close = gopher_close,
125
+    .name           = "gopher",
126
+    .url_open       = gopher_open,
127
+    .url_read       = gopher_read,
128
+    .url_write      = gopher_write,
129
+    .url_close      = gopher_close,
130
+    .priv_data_size = sizeof(GopherContext),
130 131
 };
... ...
@@ -93,7 +93,7 @@ static int http_open_cnx(URLContext *h)
93 93
 {
94 94
     const char *path, *proxy_path, *lower_proto = "tcp", *local_path;
95 95
     char hostname[1024], hoststr[1024], proto[10];
96
-    char auth[1024], proxyauth[1024];
96
+    char auth[1024], proxyauth[1024] = "";
97 97
     char path1[1024];
98 98
     char buf[1024], urlbuf[1024];
99 99
     int port, use_proxy, err, location_changed = 0, redirects = 0;
... ...
@@ -52,7 +52,6 @@ static int rtmp_close(URLContext *s)
52 52
     RTMP *r = s->priv_data;
53 53
 
54 54
     RTMP_Close(r);
55
-    av_free(r);
56 55
     return 0;
57 56
 }
58 57
 
... ...
@@ -70,13 +69,9 @@ static int rtmp_close(URLContext *s)
70 70
  */
71 71
 static int rtmp_open(URLContext *s, const char *uri, int flags)
72 72
 {
73
-    RTMP *r;
73
+    RTMP *r = s->priv_data;
74 74
     int rc;
75 75
 
76
-    r = av_mallocz(sizeof(RTMP));
77
-    if (!r)
78
-        return AVERROR(ENOMEM);
79
-
80 76
     switch (av_log_get_level()) {
81 77
     default:
82 78
     case AV_LOG_FATAL:   rc = RTMP_LOGCRIT;    break;
... ...
@@ -103,11 +98,9 @@ static int rtmp_open(URLContext *s, const char *uri, int flags)
103 103
         goto fail;
104 104
     }
105 105
 
106
-    s->priv_data   = r;
107 106
     s->is_streamed = 1;
108 107
     return 0;
109 108
 fail:
110
-    av_free(r);
111 109
     return rc;
112 110
 }
113 111
 
... ...
@@ -167,7 +160,8 @@ URLProtocol ff_rtmp_protocol = {
167 167
     .url_close           = rtmp_close,
168 168
     .url_read_pause      = rtmp_read_pause,
169 169
     .url_read_seek       = rtmp_read_seek,
170
-    .url_get_file_handle = rtmp_get_file_handle
170
+    .url_get_file_handle = rtmp_get_file_handle,
171
+    .priv_data_size      = sizeof(RTMP),
171 172
 };
172 173
 
173 174
 URLProtocol ff_rtmpt_protocol = {
... ...
@@ -178,7 +172,8 @@ URLProtocol ff_rtmpt_protocol = {
178 178
     .url_close           = rtmp_close,
179 179
     .url_read_pause      = rtmp_read_pause,
180 180
     .url_read_seek       = rtmp_read_seek,
181
-    .url_get_file_handle = rtmp_get_file_handle
181
+    .url_get_file_handle = rtmp_get_file_handle,
182
+    .priv_data_size      = sizeof(RTMP),
182 183
 };
183 184
 
184 185
 URLProtocol ff_rtmpe_protocol = {
... ...
@@ -189,7 +184,8 @@ URLProtocol ff_rtmpe_protocol = {
189 189
     .url_close           = rtmp_close,
190 190
     .url_read_pause      = rtmp_read_pause,
191 191
     .url_read_seek       = rtmp_read_seek,
192
-    .url_get_file_handle = rtmp_get_file_handle
192
+    .url_get_file_handle = rtmp_get_file_handle,
193
+    .priv_data_size      = sizeof(RTMP),
193 194
 };
194 195
 
195 196
 URLProtocol ff_rtmpte_protocol = {
... ...
@@ -200,7 +196,8 @@ URLProtocol ff_rtmpte_protocol = {
200 200
     .url_close           = rtmp_close,
201 201
     .url_read_pause      = rtmp_read_pause,
202 202
     .url_read_seek       = rtmp_read_seek,
203
-    .url_get_file_handle = rtmp_get_file_handle
203
+    .url_get_file_handle = rtmp_get_file_handle,
204
+    .priv_data_size      = sizeof(RTMP),
204 205
 };
205 206
 
206 207
 URLProtocol ff_rtmps_protocol = {
... ...
@@ -211,5 +208,6 @@ URLProtocol ff_rtmps_protocol = {
211 211
     .url_close           = rtmp_close,
212 212
     .url_read_pause      = rtmp_read_pause,
213 213
     .url_read_seek       = rtmp_read_seek,
214
-    .url_get_file_handle = rtmp_get_file_handle
214
+    .url_get_file_handle = rtmp_get_file_handle,
215
+    .priv_data_size      = sizeof(RTMP),
215 216
 };
... ...
@@ -79,16 +79,11 @@ static int md5_close(URLContext *h)
79 79
     return err;
80 80
 }
81 81
 
82
-static int md5_get_handle(URLContext *h)
83
-{
84
-    return (intptr_t)h->priv_data;
85
-}
86 82
 
87 83
 URLProtocol ff_md5_protocol = {
88 84
     .name                = "md5",
89 85
     .url_open            = md5_open,
90 86
     .url_write           = md5_write,
91 87
     .url_close           = md5_close,
92
-    .url_get_file_handle = md5_get_handle,
93 88
     .priv_data_size      = PRIV_SIZE,
94 89
 };
... ...
@@ -69,7 +69,6 @@ static int mmsh_close(URLContext *h)
69 69
         ffurl_close(mms->mms_hd);
70 70
     av_free(mms->streams);
71 71
     av_free(mms->asf_header);
72
-    av_freep(&h->priv_data);
73 72
     return 0;
74 73
 }
75 74
 
... ...
@@ -218,12 +217,9 @@ static int mmsh_open_internal(URLContext *h, const char *uri, int flags, int tim
218 218
     char httpname[256], path[256], host[128];
219 219
     char *stream_selection = NULL;
220 220
     char headers[1024];
221
-    MMSHContext *mmsh;
221
+    MMSHContext *mmsh = h->priv_data;
222 222
     MMSContext *mms;
223 223
 
224
-    mmsh = h->priv_data = av_mallocz(sizeof(MMSHContext));
225
-    if (!h->priv_data)
226
-        return AVERROR(ENOMEM);
227 224
     mmsh->request_seq = h->is_streamed = 1;
228 225
     mms = &mmsh->mms;
229 226
     av_strlcpy(mmsh->location, uri, sizeof(mmsh->location));
... ...
@@ -263,9 +259,9 @@ static int mmsh_open_internal(URLContext *h, const char *uri, int flags, int tim
263 263
     // close the socket and then reopen it for sending the second play request.
264 264
     ffurl_close(mms->mms_hd);
265 265
     memset(headers, 0, sizeof(headers));
266
-    if (ffurl_alloc(&mms->mms_hd, httpname, AVIO_FLAG_READ,
267
-                    &h->interrupt_callback) < 0) {
268
-        return AVERROR(EIO);
266
+    if ((err = ffurl_alloc(&mms->mms_hd, httpname, AVIO_FLAG_READ,
267
+                           &h->interrupt_callback)) < 0) {
268
+        goto fail;
269 269
     }
270 270
     stream_selection = av_mallocz(mms->stream_num * 19 + 1);
271 271
     if (!stream_selection)
... ...
@@ -403,10 +399,11 @@ static int64_t mmsh_seek(URLContext *h, int64_t pos, int whence)
403 403
 }
404 404
 
405 405
 URLProtocol ff_mmsh_protocol = {
406
-    .name      = "mmsh",
407
-    .url_open  = mmsh_open,
408
-    .url_read  = mmsh_read,
409
-    .url_seek  = mmsh_seek,
410
-    .url_close = mmsh_close,
406
+    .name           = "mmsh",
407
+    .url_open       = mmsh_open,
408
+    .url_read       = mmsh_read,
409
+    .url_seek       = mmsh_seek,
410
+    .url_close      = mmsh_close,
411 411
     .url_read_seek  = mmsh_read_seek,
412
+    .priv_data_size = sizeof(MMSHContext),
412 413
 };
... ...
@@ -470,7 +470,6 @@ static int mms_close(URLContext *h)
470 470
     /* free all separately allocated pointers in mms */
471 471
     av_free(mms->streams);
472 472
     av_free(mms->asf_header);
473
-    av_freep(&h->priv_data);
474 473
 
475 474
     return 0;
476 475
 }
... ...
@@ -502,15 +501,12 @@ static void clear_stream_buffers(MMSContext *mms)
502 502
 
503 503
 static int mms_open(URLContext *h, const char *uri, int flags)
504 504
 {
505
-    MMSTContext *mmst;
505
+    MMSTContext *mmst = h->priv_data;
506 506
     MMSContext *mms;
507 507
     int port, err;
508 508
     char tcpname[256];
509 509
 
510 510
     h->is_streamed = 1;
511
-    mmst = h->priv_data = av_mallocz(sizeof(MMSTContext));
512
-    if (!h->priv_data)
513
-        return AVERROR(ENOMEM);
514 511
     mms = &mmst->mms;
515 512
 
516 513
     // only for MMS over TCP, so set proto = NULL
... ...
@@ -624,8 +620,9 @@ static int mms_read(URLContext *h, uint8_t *buf, int size)
624 624
 }
625 625
 
626 626
 URLProtocol ff_mmst_protocol = {
627
-    .name      = "mmst",
628
-    .url_open  = mms_open,
629
-    .url_read  = mms_read,
630
-    .url_close = mms_close,
627
+    .name           = "mmst",
628
+    .url_open       = mms_open,
629
+    .url_read       = mms_read,
630
+    .url_close      = mms_close,
631
+    .priv_data_size = sizeof(MMSTContext),
631 632
 };
... ...
@@ -38,7 +38,8 @@ static int pmp_probe(AVProbeData *p) {
38 38
     return 0;
39 39
 }
40 40
 
41
-static int pmp_header(AVFormatContext *s, AVFormatParameters *ap) {
41
+static int pmp_header(AVFormatContext *s, AVFormatParameters *ap)
42
+{
42 43
     PMPContext *pmp = s->priv_data;
43 44
     AVIOContext *pb = s->pb;
44 45
     int tb_num, tb_den;
... ...
@@ -93,7 +94,6 @@ static int pmp_header(AVFormatContext *s, AVFormatParameters *ap) {
93 93
         AVStream *ast = avformat_new_stream(s, NULL);
94 94
         if (!ast)
95 95
             return AVERROR(ENOMEM);
96
-        ast->id = i;
97 96
         ast->codec->codec_type = AVMEDIA_TYPE_AUDIO;
98 97
         ast->codec->codec_id = audio_codec_id;
99 98
         ast->codec->channels = channels;
... ...
@@ -111,7 +111,8 @@ static int pmp_header(AVFormatContext *s, AVFormatParameters *ap) {
111 111
     return 0;
112 112
 }
113 113
 
114
-static int pmp_packet(AVFormatContext *s, AVPacket *pkt) {
114
+static int pmp_packet(AVFormatContext *s, AVPacket *pkt)
115
+{
115 116
     PMPContext *pmp = s->priv_data;
116 117
     AVIOContext *pb = s->pb;
117 118
     int ret = 0;
... ...
@@ -128,14 +129,18 @@ static int pmp_packet(AVFormatContext *s, AVPacket *pkt) {
128 128
         av_fast_malloc(&pmp->packet_sizes,
129 129
                        &pmp->packet_sizes_alloc,
130 130
                        num_packets * sizeof(*pmp->packet_sizes));
131
+        if (!pmp->packet_sizes_alloc) {
132
+            av_log(s, AV_LOG_ERROR, "Cannot (re)allocate packet buffer\n");
133
+            return AVERROR(ENOMEM);
134
+        }
131 135
         for (i = 0; i < num_packets; i++)
132 136
             pmp->packet_sizes[i] = avio_rl32(pb);
133 137
     }
134 138
     ret = av_get_packet(pb, pkt, pmp->packet_sizes[pmp->current_packet]);
135 139
     if (ret >= 0) {
136 140
         ret = 0;
137
-        // FIXME: this is a hack that should be remove once
138
-        // compute_pkt_fields can handle
141
+        // FIXME: this is a hack that should be removed once
142
+        // compute_pkt_fields() can handle timestamps properly
139 143
         if (pmp->cur_stream == 0)
140 144
             pkt->dts = s->streams[0]->cur_dts++;
141 145
         pkt->stream_index = pmp->cur_stream;
... ...
@@ -146,8 +151,8 @@ static int pmp_packet(AVFormatContext *s, AVPacket *pkt) {
146 146
     return ret;
147 147
 }
148 148
 
149
-static int pmp_seek(AVFormatContext *s, int stream_index,
150
-                     int64_t ts, int flags) {
149
+static int pmp_seek(AVFormatContext *s, int stream_index, int64_t ts, int flags)
150
+{
151 151
     PMPContext *pmp = s->priv_data;
152 152
     pmp->cur_stream = 0;
153 153
     // fallback to default seek now
... ...
@@ -784,7 +784,6 @@ static int rtmp_close(URLContext *h)
784 784
 
785 785
     av_freep(&rt->flv_data);
786 786
     ffurl_close(rt->stream);
787
-    av_free(rt);
788 787
     return 0;
789 788
 }
790 789
 
... ...
@@ -799,16 +798,12 @@ static int rtmp_close(URLContext *h)
799 799
  */
800 800
 static int rtmp_open(URLContext *s, const char *uri, int flags)
801 801
 {
802
-    RTMPContext *rt;
802
+    RTMPContext *rt = s->priv_data;
803 803
     char proto[8], hostname[256], path[1024], *fname;
804 804
     uint8_t buf[2048];
805 805
     int port;
806 806
     int ret;
807 807
 
808
-    rt = av_mallocz(sizeof(RTMPContext));
809
-    if (!rt)
810
-        return AVERROR(ENOMEM);
811
-    s->priv_data = rt;
812 808
     rt->is_input = !(flags & AVIO_FLAG_WRITE);
813 809
 
814 810
     av_url_split(proto, sizeof(proto), NULL, 0, hostname, sizeof(hostname), &port,
... ...
@@ -826,7 +821,7 @@ static int rtmp_open(URLContext *s, const char *uri, int flags)
826 826
 
827 827
     rt->state = STATE_START;
828 828
     if (rtmp_handshake(s, rt))
829
-        return -1;
829
+        goto fail;
830 830
 
831 831
     rt->chunk_size = 128;
832 832
     rt->state = STATE_HANDSHAKED;
... ...
@@ -997,9 +992,10 @@ static int rtmp_write(URLContext *s, const uint8_t *buf, int size)
997 997
 }
998 998
 
999 999
 URLProtocol ff_rtmp_protocol = {
1000
-    .name      = "rtmp",
1001
-    .url_open  = rtmp_open,
1002
-    .url_read  = rtmp_read,
1003
-    .url_write = rtmp_write,
1004
-    .url_close = rtmp_close,
1000
+    .name           = "rtmp",
1001
+    .url_open       = rtmp_open,
1002
+    .url_read       = rtmp_read,
1003
+    .url_write      = rtmp_write,
1004
+    .url_close      = rtmp_close,
1005
+    .priv_data_size = sizeof(RTMPContext),
1005 1006
 };
... ...
@@ -27,10 +27,8 @@ static int g726_ ## bitrate ##_init(AVFormatContext *s, int st_index, PayloadCon
27 27
     AVStream *stream = s->streams[st_index]; \
28 28
     AVCodecContext *codec = stream->codec; \
29 29
 \
30
-    codec->bit_rate = bitrate*1000; \
31
-    if (codec->sample_rate) \
32
-        codec->bits_per_coded_sample = \
33
-            av_clip((codec->bit_rate + codec->sample_rate/2) / codec->sample_rate, 2, 5); \
30
+    codec->bits_per_coded_sample = bitrate/8; \
31
+    codec->bit_rate = codec->bits_per_coded_sample * codec->sample_rate; \
34 32
 \
35 33
     return 0; \
36 34
 } \
... ...
@@ -72,6 +72,7 @@ static int is_supported(enum CodecID id)
72 72
     case CODEC_ID_THEORA:
73 73
     case CODEC_ID_VP8:
74 74
     case CODEC_ID_ADPCM_G722:
75
+    case CODEC_ID_ADPCM_G726:
75 76
         return 1;
76 77
     default:
77 78
         return 0;
... ...
@@ -121,7 +122,7 @@ static int rtp_write_header(AVFormatContext *s1)
121 121
             if (st->codec->frame_size == 0) {
122 122
                 av_log(s1, AV_LOG_ERROR, "Cannot respect max delay: frame size = 0\n");
123 123
             } else {
124
-                s->max_frames_per_packet = av_rescale_rnd(s1->max_delay, st->codec->sample_rate, AV_TIME_BASE * st->codec->frame_size, AV_ROUND_DOWN);
124
+                s->max_frames_per_packet = av_rescale_rnd(s1->max_delay, st->codec->sample_rate, AV_TIME_BASE * (int64_t)st->codec->frame_size, AV_ROUND_DOWN);
125 125
             }
126 126
         }
127 127
         if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
... ...
@@ -248,14 +249,16 @@ void ff_rtp_send_data(AVFormatContext *s1, const uint8_t *buf1, int len, int m)
248 248
 /* send an integer number of samples and compute time stamp and fill
249 249
    the rtp send buffer before sending. */
250 250
 static void rtp_send_samples(AVFormatContext *s1,
251
-                             const uint8_t *buf1, int size, int sample_size)
251
+                             const uint8_t *buf1, int size, int sample_size_bits)
252 252
 {
253 253
     RTPMuxContext *s = s1->priv_data;
254 254
     int len, max_packet_size, n;
255
+    /* Calculate the number of bytes to get samples aligned on a byte border */
256
+    int aligned_samples_size = sample_size_bits/av_gcd(sample_size_bits, 8);
255 257
 
256
-    max_packet_size = (s->max_payload_size / sample_size) * sample_size;
257
-    /* not needed, but who nows */
258
-    if ((size % sample_size) != 0)
258
+    max_packet_size = (s->max_payload_size / aligned_samples_size) * aligned_samples_size;
259
+    /* Not needed, but who knows. Don't check if samples aren't an even number of bytes. */
260
+    if ((sample_size_bits % 8) == 0 && ((8 * size) % sample_size_bits) != 0)
259 261
         av_abort();
260 262
     n = 0;
261 263
     while (size > 0) {
... ...
@@ -267,7 +270,7 @@ static void rtp_send_samples(AVFormatContext *s1,
267 267
         s->buf_ptr += len;
268 268
         buf1 += len;
269 269
         size -= len;
270
-        s->timestamp = s->cur_timestamp + n / sample_size;
270
+        s->timestamp = s->cur_timestamp + n * 8 / sample_size_bits;
271 271
         ff_rtp_send_data(s1, s->buf, s->buf_ptr - s->buf, 0);
272 272
         n += (s->buf_ptr - s->buf);
273 273
     }
... ...
@@ -394,19 +397,24 @@ static int rtp_write_packet(AVFormatContext *s1, AVPacket *pkt)
394 394
     case CODEC_ID_PCM_ALAW:
395 395
     case CODEC_ID_PCM_U8:
396 396
     case CODEC_ID_PCM_S8:
397
-        rtp_send_samples(s1, pkt->data, size, 1 * st->codec->channels);
397
+        rtp_send_samples(s1, pkt->data, size, 8 * st->codec->channels);
398 398
         break;
399 399
     case CODEC_ID_PCM_U16BE:
400 400
     case CODEC_ID_PCM_U16LE:
401 401
     case CODEC_ID_PCM_S16BE:
402 402
     case CODEC_ID_PCM_S16LE:
403
-        rtp_send_samples(s1, pkt->data, size, 2 * st->codec->channels);
403
+        rtp_send_samples(s1, pkt->data, size, 16 * st->codec->channels);
404 404
         break;
405 405
     case CODEC_ID_ADPCM_G722:
406 406
         /* The actual sample size is half a byte per sample, but since the
407 407
          * stream clock rate is 8000 Hz while the sample rate is 16000 Hz,
408
-         * the correct parameter for send_samples is 1 byte per stream clock. */
409
-        rtp_send_samples(s1, pkt->data, size, 1 * st->codec->channels);
408
+         * the correct parameter for send_samples_bits is 8 bits per stream
409
+         * clock. */
410
+        rtp_send_samples(s1, pkt->data, size, 8 * st->codec->channels);
411
+        break;
412
+    case CODEC_ID_ADPCM_G726:
413
+        rtp_send_samples(s1, pkt->data, size,
414
+                         st->codec->bits_per_coded_sample * st->codec->channels);
410 415
         break;
411 416
     case CODEC_ID_MP2:
412 417
     case CODEC_ID_MP3:
... ...
@@ -137,7 +137,7 @@ static void build_udp_url(char *buf, int buf_size,
137 137
 
138 138
 static int rtp_open(URLContext *h, const char *uri, int flags)
139 139
 {
140
-    RTPContext *s;
140
+    RTPContext *s = h->priv_data;
141 141
     int rtp_port, rtcp_port,
142 142
         ttl, connect,
143 143
         local_rtp_port, local_rtcp_port, max_packet_size;
... ...
@@ -146,11 +146,6 @@ static int rtp_open(URLContext *h, const char *uri, int flags)
146 146
     char path[1024];
147 147
     const char *p;
148 148
 
149
-    s = av_mallocz(sizeof(RTPContext));
150
-    if (!s)
151
-        return AVERROR(ENOMEM);
152
-    h->priv_data = s;
153
-
154 149
     av_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &rtp_port,
155 150
                  path, sizeof(path), uri);
156 151
     /* extract parameters */
... ...
@@ -214,7 +209,6 @@ static int rtp_open(URLContext *h, const char *uri, int flags)
214 214
         ffurl_close(s->rtp_hd);
215 215
     if (s->rtcp_hd)
216 216
         ffurl_close(s->rtcp_hd);
217
-    av_free(s);
218 217
     return AVERROR(EIO);
219 218
 }
220 219
 
... ...
@@ -291,7 +285,6 @@ static int rtp_close(URLContext *h)
291 291
 
292 292
     ffurl_close(s->rtp_hd);
293 293
     ffurl_close(s->rtcp_hd);
294
-    av_free(s);
295 294
     return 0;
296 295
 }
297 296
 
... ...
@@ -337,4 +330,5 @@ URLProtocol ff_rtp_protocol = {
337 337
     .url_write           = rtp_write,
338 338
     .url_close           = rtp_close,
339 339
     .url_get_file_handle = rtp_get_file_handle,
340
+    .priv_data_size      = sizeof(RTPContext),
340 341
 };
... ...
@@ -517,6 +517,14 @@ static char *sdp_write_media_attributes(char *buff, int size, AVCodecContext *c,
517 517
                                          payload_type,
518 518
                                          8000, c->channels);
519 519
             break;
520
+        case CODEC_ID_ADPCM_G726: {
521
+            if (payload_type >= RTP_PT_PRIVATE)
522
+                av_strlcatf(buff, size, "a=rtpmap:%d G726-%d/%d\r\n",
523
+                                         payload_type,
524
+                                         c->bits_per_coded_sample*8,
525
+                                         c->sample_rate);
526
+            break;
527
+        }
520 528
         default:
521 529
             /* Nothing special to do here... */
522 530
             break;
... ...
@@ -39,7 +39,7 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
39 39
 {
40 40
     struct addrinfo hints, *ai, *cur_ai;
41 41
     int port, fd = -1;
42
-    TCPContext *s = NULL;
42
+    TCPContext *s = h->priv_data;
43 43
     int listen_socket = 0;
44 44
     const char *p;
45 45
     char buf[256];
... ...
@@ -135,12 +135,6 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
135 135
             goto fail;
136 136
         }
137 137
     }
138
-    s = av_malloc(sizeof(TCPContext));
139
-    if (!s) {
140
-        freeaddrinfo(ai);
141
-        return AVERROR(ENOMEM);
142
-    }
143
-    h->priv_data = s;
144 138
     h->is_streamed = 1;
145 139
     s->fd = fd;
146 140
     freeaddrinfo(ai);
... ...
@@ -193,7 +187,6 @@ static int tcp_close(URLContext *h)
193 193
 {
194 194
     TCPContext *s = h->priv_data;
195 195
     closesocket(s->fd);
196
-    av_free(s);
197 196
     return 0;
198 197
 }
199 198
 
... ...
@@ -210,4 +203,5 @@ URLProtocol ff_tcp_protocol = {
210 210
     .url_write           = tcp_write,
211 211
     .url_close           = tcp_close,
212 212
     .url_get_file_handle = tcp_get_file_handle,
213
+    .priv_data_size      = sizeof(TCPContext),
213 214
 };
... ...
@@ -381,7 +381,7 @@ static int udp_open(URLContext *h, const char *uri, int flags)
381 381
 {
382 382
     char hostname[1024], localaddr[1024] = "";
383 383
     int port, udp_fd = -1, tmp, bind_ret = -1;
384
-    UDPContext *s = NULL;
384
+    UDPContext *s = h->priv_data;
385 385
     int is_output;
386 386
     const char *p;
387 387
     char buf[256];
... ...
@@ -394,11 +394,6 @@ static int udp_open(URLContext *h, const char *uri, int flags)
394 394
 
395 395
     is_output = !(flags & AVIO_FLAG_READ);
396 396
 
397
-    s = av_mallocz(sizeof(UDPContext));
398
-    if (!s)
399
-        return AVERROR(ENOMEM);
400
-
401
-    h->priv_data = s;
402 397
     s->ttl = 16;
403 398
     s->buffer_size = is_output ? UDP_TX_BUF_SIZE : UDP_MAX_PKT_SIZE;
404 399
 
... ...
@@ -533,7 +528,6 @@ static int udp_open(URLContext *h, const char *uri, int flags)
533 533
     if (udp_fd >= 0)
534 534
         closesocket(udp_fd);
535 535
     av_fifo_free(s->fifo);
536
-    av_free(s);
537 536
     return AVERROR(EIO);
538 537
 }
539 538
 
... ...
@@ -614,7 +608,6 @@ static int udp_close(URLContext *h)
614 614
         udp_leave_multicast_group(s->udp_fd, (struct sockaddr *)&s->dest_addr);
615 615
     closesocket(s->udp_fd);
616 616
     av_fifo_free(s->fifo);
617
-    av_free(s);
618 617
     return 0;
619 618
 }
620 619
 
... ...
@@ -625,4 +618,5 @@ URLProtocol ff_udp_protocol = {
625 625
     .url_write           = udp_write,
626 626
     .url_close           = udp_close,
627 627
     .url_get_file_handle = udp_get_file_handle,
628
+    .priv_data_size      = sizeof(UDPContext),
628 629
 };
... ...
@@ -44,6 +44,7 @@
44 44
 #include "libavutil/cpu.h"
45 45
 #include "libavutil/avutil.h"
46 46
 #include "libavutil/bswap.h"
47
+#include "libavutil/mathematics.h"
47 48
 #include "libavutil/opt.h"
48 49
 #include "libavutil/pixdesc.h"
49 50
 #include "libavutil/avassert.h"
... ...
@@ -395,26 +395,62 @@ do_audio_enc_dec() {
395 395
     do_audio_decoding
396 396
 }
397 397
 
398
-if [ -n "$do_pcm" ] ; then
398
+if [ -n "$do_pcm_alaw" ] ; then
399 399
 do_audio_enc_dec wav s16 pcm_alaw
400
+fi
401
+if [ -n "$do_pcm_mulaw" ] ; then
400 402
 do_audio_enc_dec wav s16 pcm_mulaw
403
+fi
404
+if [ -n "$do_pcm_s8" ] ; then
401 405
 do_audio_enc_dec mov u8 pcm_s8
406
+fi
407
+if [ -n "$do_pcm_u8" ] ; then
402 408
 do_audio_enc_dec wav u8 pcm_u8
409
+fi
410
+if [ -n "$do_pcm_s16be" ] ; then
403 411
 do_audio_enc_dec mov s16 pcm_s16be
412
+fi
413
+if [ -n "$do_pcm_s16le" ] ; then
404 414
 do_audio_enc_dec wav s16 pcm_s16le
405
-do_audio_enc_dec mkv s16 pcm_s16be
406
-do_audio_enc_dec mkv s16 pcm_s16le
415
+fi
416
+if [ -n "$do_pcm_s24be" ] ; then
407 417
 do_audio_enc_dec mov s32 pcm_s24be
418
+fi
419
+if [ -n "$do_pcm_s24le" ] ; then
408 420
 do_audio_enc_dec wav s32 pcm_s24le
409
-#do_audio_enc_dec ??? s32 pcm_u24be #no compatible muxer or demuxer
410
-#do_audio_enc_dec ??? s32 pcm_u24le #no compatible muxer or demuxer
421
+fi
422
+# no compatible muxer or demuxer
423
+# if [ -n "$do_pcm_u24be" ] ; then
424
+# do_audio_enc_dec ??? u32 pcm_u24be
425
+# fi
426
+# if [ -n "$do_pcm_u24le" ] ; then
427
+# do_audio_enc_dec ??? u32 pcm_u24le
428
+# fi
429
+if [ -n "$do_pcm_s32be" ] ; then
411 430
 do_audio_enc_dec mov s32 pcm_s32be
431
+fi
432
+if [ -n "$do_pcm_s32le" ] ; then
412 433
 do_audio_enc_dec wav s32 pcm_s32le
413
-#do_audio_enc_dec ??? s32 pcm_u32be #no compatible muxer or demuxer
414
-#do_audio_enc_dec ??? s32 pcm_u32le #no compatible muxer or demuxer
434
+fi
435
+# no compatible muxer or demuxer
436
+# if [ -n "$do_pcm_u32be" ] ; then
437
+# do_audio_enc_dec ??? u32 pcm_u32be
438
+# fi
439
+# if [ -n "$do_pcm_u32le" ] ; then
440
+# do_audio_enc_dec ??? u32 pcm_u32le
441
+# fi
442
+if [ -n "$do_pcm_f32be" ] ; then
415 443
 do_audio_enc_dec au  flt pcm_f32be
444
+fi
445
+if [ -n "$do_pcm_f32le" ] ; then
416 446
 do_audio_enc_dec wav flt pcm_f32le
447
+fi
448
+if [ -n "$do_pcm_f64be" ] ; then
417 449
 do_audio_enc_dec au  dbl pcm_f64be
450
+fi
451
+if [ -n "$do_pcm_f64le" ] ; then
418 452
 do_audio_enc_dec wav dbl pcm_f64le
453
+fi
454
+if [ -n "$do_pcm_s24daud" ] ; then
419 455
 do_audio_enc_dec 302 s16 pcm_s24daud "-ac 6 -ar 96000"
420 456
 fi
421 457
deleted file mode 100644
... ...
@@ -1,68 +0,0 @@
1
-ede2da07839a00c255a43129922f2c7b *./tests/data/acodec/pcm_alaw.wav
2
-529258 ./tests/data/acodec/pcm_alaw.wav
3
-f323f7551ffad91de8613f44dcb198b6 *./tests/data/pcm.acodec.out.wav
4
-stddev:  101.67 PSNR: 56.19 MAXDIFF:  515 bytes:  1058400/  1058400
5
-0c2a55850fb46ad5385a69b15b271f10 *./tests/data/acodec/pcm_mulaw.wav
6
-529258 ./tests/data/acodec/pcm_mulaw.wav
7
-7ae8c3fc804bd574006fd547fe28980c *./tests/data/pcm.acodec.out.wav
8
-stddev:  103.38 PSNR: 56.04 MAXDIFF:  644 bytes:  1058400/  1058400
9
-b78d2a30df75af08ecf86f201281fec2 *./tests/data/acodec/pcm_s8.mov
10
-529793 ./tests/data/acodec/pcm_s8.mov
11
-651d4eb8d98dfcdda96ae6c43d8f156b *./tests/data/pcm.acodec.out.wav
12
-stddev:  147.89 PSNR: 52.93 MAXDIFF:  255 bytes:  1058400/  1058400
13
-70fecbae732f81143a560c7315eda49a *./tests/data/acodec/pcm_u8.wav
14
-529246 ./tests/data/acodec/pcm_u8.wav
15
-651d4eb8d98dfcdda96ae6c43d8f156b *./tests/data/pcm.acodec.out.wav
16
-stddev:  147.89 PSNR: 52.93 MAXDIFF:  255 bytes:  1058400/  1058400
17
-9686b93d1439fc2df991a004ab0298f4 *./tests/data/acodec/pcm_s16be.mov
18
-1058993 ./tests/data/acodec/pcm_s16be.mov
19
-64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
20
-stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
21
-64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/acodec/pcm_s16le.wav
22
-1058446 ./tests/data/acodec/pcm_s16le.wav
23
-64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
24
-stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
25
-af717ca95eaca310772eb1238c745d1b *./tests/data/acodec/pcm_s16be.mkv
26
-1060638 ./tests/data/acodec/pcm_s16be.mkv
27
-64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
28
-stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
29
-c4f51bf32fad2f7af8ea5beedb56168b *./tests/data/acodec/pcm_s16le.mkv
30
-1060638 ./tests/data/acodec/pcm_s16le.mkv
31
-64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
32
-stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
33
-22c5c3df0a4765e28c205a4fb95b3cdc *./tests/data/acodec/pcm_s24be.mov
34
-1588193 ./tests/data/acodec/pcm_s24be.mov
35
-64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
36
-stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
37
-a85380fb79b0d4fff38e24ac1e34bb94 *./tests/data/acodec/pcm_s24le.wav
38
-1587668 ./tests/data/acodec/pcm_s24le.wav
39
-64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
40
-stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
41
-b36ac7a1b4fc28248a565a676e555bd1 *./tests/data/acodec/pcm_s32be.mov
42
-2117393 ./tests/data/acodec/pcm_s32be.mov
43
-64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
44
-stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
45
-da6ed80f4f40f0082577dea80827e014 *./tests/data/acodec/pcm_s32le.wav
46
-2116868 ./tests/data/acodec/pcm_s32le.wav
47
-64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
48
-stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
49
-118ff3dc83c62ce9ce669eef57e55bb2 *./tests/data/acodec/pcm_f32be.au
50
-2116824 ./tests/data/acodec/pcm_f32be.au
51
-64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
52
-stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
53
-46f44f86a18984a832206ab9e29a79f2 *./tests/data/acodec/pcm_f32le.wav
54
-2116880 ./tests/data/acodec/pcm_f32le.wav
55
-64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
56
-stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
57
-8112296b1ed94f72f20d04b1a54850a7 *./tests/data/acodec/pcm_f64be.au
58
-4233624 ./tests/data/acodec/pcm_f64be.au
59
-64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
60
-stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
61
-ba17c6d1a270e1333e981f239bf7eb45 *./tests/data/acodec/pcm_f64le.wav
62
-4233680 ./tests/data/acodec/pcm_f64le.wav
63
-64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
64
-stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
65
-1b75d5198ae789ab3c48f7024e08f4a9 *./tests/data/acodec/pcm_s24daud.302
66
-10368730 ./tests/data/acodec/pcm_s24daud.302
67
-4708f86529c594e29404603c64bb208c *./tests/data/pcm.acodec.out.wav
68
-stddev: 8967.92 PSNR: 17.28 MAXDIFF:42548 bytes:  6911796/  1058400
69 1
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+ede2da07839a00c255a43129922f2c7b *./tests/data/acodec/pcm_alaw.wav
1
+529258 ./tests/data/acodec/pcm_alaw.wav
2
+f323f7551ffad91de8613f44dcb198b6 *./tests/data/pcm_alaw.acodec.out.wav
3
+stddev:  101.67 PSNR: 56.19 MAXDIFF:  515 bytes:  1058400/  1058400
0 4
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+118ff3dc83c62ce9ce669eef57e55bb2 *./tests/data/acodec/pcm_f32be.au
1
+2116824 ./tests/data/acodec/pcm_f32be.au
2
+64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_f32be.acodec.out.wav
3
+stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
0 4
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+46f44f86a18984a832206ab9e29a79f2 *./tests/data/acodec/pcm_f32le.wav
1
+2116880 ./tests/data/acodec/pcm_f32le.wav
2
+64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_f32le.acodec.out.wav
3
+stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
0 4
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+8112296b1ed94f72f20d04b1a54850a7 *./tests/data/acodec/pcm_f64be.au
1
+4233624 ./tests/data/acodec/pcm_f64be.au
2
+64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_f64be.acodec.out.wav
3
+stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
0 4
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+ba17c6d1a270e1333e981f239bf7eb45 *./tests/data/acodec/pcm_f64le.wav
1
+4233680 ./tests/data/acodec/pcm_f64le.wav
2
+64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_f64le.acodec.out.wav
3
+stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
0 4
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+0c2a55850fb46ad5385a69b15b271f10 *./tests/data/acodec/pcm_mulaw.wav
1
+529258 ./tests/data/acodec/pcm_mulaw.wav
2
+7ae8c3fc804bd574006fd547fe28980c *./tests/data/pcm_mulaw.acodec.out.wav
3
+stddev:  103.38 PSNR: 56.04 MAXDIFF:  644 bytes:  1058400/  1058400
0 4
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+9686b93d1439fc2df991a004ab0298f4 *./tests/data/acodec/pcm_s16be.mov
1
+1058993 ./tests/data/acodec/pcm_s16be.mov
2
+64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_s16be.acodec.out.wav
3
+stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
0 4
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/acodec/pcm_s16le.wav
1
+1058446 ./tests/data/acodec/pcm_s16le.wav
2
+64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_s16le.acodec.out.wav
3
+stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
0 4
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+22c5c3df0a4765e28c205a4fb95b3cdc *./tests/data/acodec/pcm_s24be.mov
1
+1588193 ./tests/data/acodec/pcm_s24be.mov
2
+64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_s24be.acodec.out.wav
3
+stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
0 4
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+1b75d5198ae789ab3c48f7024e08f4a9 *./tests/data/acodec/pcm_s24daud.302
1
+10368730 ./tests/data/acodec/pcm_s24daud.302
2
+4708f86529c594e29404603c64bb208c *./tests/data/pcm_s24daud.acodec.out.wav
3
+stddev: 8967.92 PSNR: 17.28 MAXDIFF:42548 bytes:  6911796/  1058400
0 4
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+a85380fb79b0d4fff38e24ac1e34bb94 *./tests/data/acodec/pcm_s24le.wav
1
+1587668 ./tests/data/acodec/pcm_s24le.wav
2
+64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_s24le.acodec.out.wav
3
+stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
0 4
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+b36ac7a1b4fc28248a565a676e555bd1 *./tests/data/acodec/pcm_s32be.mov
1
+2117393 ./tests/data/acodec/pcm_s32be.mov
2
+64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_s32be.acodec.out.wav
3
+stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
0 4
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+da6ed80f4f40f0082577dea80827e014 *./tests/data/acodec/pcm_s32le.wav
1
+2116868 ./tests/data/acodec/pcm_s32le.wav
2
+64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_s32le.acodec.out.wav
3
+stddev:    0.00 PSNR:999.99 MAXDIFF:    0 bytes:  1058400/  1058400
0 4
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+b78d2a30df75af08ecf86f201281fec2 *./tests/data/acodec/pcm_s8.mov
1
+529793 ./tests/data/acodec/pcm_s8.mov
2
+651d4eb8d98dfcdda96ae6c43d8f156b *./tests/data/pcm_s8.acodec.out.wav
3
+stddev:  147.89 PSNR: 52.93 MAXDIFF:  255 bytes:  1058400/  1058400
0 4
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+70fecbae732f81143a560c7315eda49a *./tests/data/acodec/pcm_u8.wav
1
+529246 ./tests/data/acodec/pcm_u8.wav
2
+651d4eb8d98dfcdda96ae6c43d8f156b *./tests/data/pcm_u8.acodec.out.wav
3
+stddev:  147.89 PSNR: 52.93 MAXDIFF:  255 bytes:  1058400/  1058400
0 4
deleted file mode 100644
... ...
@@ -1,53 +0,0 @@
1
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:    412 size:  4096
2
-ret: 0         st:-1 flags:0  ts:-1.000000
3
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:    412 size:  4096
4
-ret: 0         st:-1 flags:1  ts: 1.894167
5
-ret: 0         st: 0 flags:1 dts: 1.881000 pts: 1.881000 pos: 332755 size:  4096
6
-ret: 0         st: 0 flags:0  ts: 0.788000
7
-ret: 0         st: 0 flags:1 dts: 0.789000 pts: 0.789000 pos: 139914 size:  4096
8
-ret: 0         st: 0 flags:1  ts:-0.317000
9
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:    412 size:  4096
10
-ret: 0         st:-1 flags:0  ts: 2.576668
11
-ret: 0         st: 0 flags:1 dts: 2.577000 pts: 2.577000 pos: 455845 size:  4096
12
-ret: 0         st:-1 flags:1  ts: 1.470835
13
-ret: 0         st: 0 flags:1 dts: 1.463000 pts: 1.463000 pos: 258901 size:  4096
14
-ret: 0         st: 0 flags:0  ts: 0.365000
15
-ret: 0         st: 0 flags:1 dts: 0.372000 pts: 0.372000 pos:  66060 size:  4096
16
-ret: 0         st: 0 flags:1  ts:-0.741000
17
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:    412 size:  4096
18
-ret: 0         st:-1 flags:0  ts: 2.153336
19
-ret: 0         st: 0 flags:1 dts: 2.159000 pts: 2.159000 pos: 381991 size:  4096
20
-ret: 0         st:-1 flags:1  ts: 1.047503
21
-ret: 0         st: 0 flags:1 dts: 1.045000 pts: 1.045000 pos: 185047 size:  4096
22
-ret: 0         st: 0 flags:0  ts:-0.058000
23
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:    412 size:  4096
24
-ret: 0         st: 0 flags:1  ts: 2.836000
25
-ret: 0         st: 0 flags:1 dts: 2.833000 pts: 2.833000 pos: 500978 size:  4096
26
-ret: 0         st:-1 flags:0  ts: 1.730004
27
-ret: 0         st: 0 flags:1 dts: 1.741000 pts: 1.741000 pos: 308137 size:  4096
28
-ret: 0         st:-1 flags:1  ts: 0.624171
29
-ret: 0         st: 0 flags:1 dts: 0.604000 pts: 0.604000 pos: 107090 size:  4096
30
-ret: 0         st: 0 flags:0  ts:-0.482000
31
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:    412 size:  4096
32
-ret: 0         st: 0 flags:1  ts: 2.413000
33
-ret: 0         st: 0 flags:1 dts: 2.392000 pts: 2.392000 pos: 423021 size:  4096
34
-ret: 0         st:-1 flags:0  ts: 1.306672
35
-ret: 0         st: 0 flags:1 dts: 1.324000 pts: 1.324000 pos: 234283 size:  4096
36
-ret: 0         st:-1 flags:1  ts: 0.200839
37
-ret: 0         st: 0 flags:1 dts: 0.186000 pts: 0.186000 pos:  33236 size:  4096
38
-ret: 0         st: 0 flags:0  ts:-0.905000
39
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:    412 size:  4096
40
-ret: 0         st: 0 flags:1  ts: 1.989000
41
-ret: 0         st: 0 flags:1 dts: 1.974000 pts: 1.974000 pos: 349167 size:  4096
42
-ret: 0         st:-1 flags:0  ts: 0.883340
43
-ret: 0         st: 0 flags:1 dts: 0.906000 pts: 0.906000 pos: 160429 size:  4096
44
-ret: 0         st:-1 flags:1  ts:-0.222493
45
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:    412 size:  4096
46
-ret: 0         st: 0 flags:0  ts: 2.672000
47
-ret: 0         st: 0 flags:1 dts: 2.694000 pts: 2.694000 pos: 476360 size:  4096
48
-ret: 0         st: 0 flags:1  ts: 1.566000
49
-ret: 0         st: 0 flags:1 dts: 1.556000 pts: 1.556000 pos: 275313 size:  4096
50
-ret: 0         st:-1 flags:0  ts: 0.460008
51
-ret: 0         st: 0 flags:1 dts: 0.464000 pts: 0.464000 pos:  82472 size:  4096
52
-ret: 0         st:-1 flags:1  ts:-0.645825
53
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:    412 size:  4096
54 1
deleted file mode 100644
... ...
@@ -1,53 +0,0 @@
1
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:    412 size:  4096
2
-ret: 0         st:-1 flags:0  ts:-1.000000
3
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:    412 size:  4096
4
-ret: 0         st:-1 flags:1  ts: 1.894167
5
-ret: 0         st: 0 flags:1 dts: 1.881000 pts: 1.881000 pos: 332755 size:  4096
6
-ret: 0         st: 0 flags:0  ts: 0.788000
7
-ret: 0         st: 0 flags:1 dts: 0.789000 pts: 0.789000 pos: 139914 size:  4096
8
-ret: 0         st: 0 flags:1  ts:-0.317000
9
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:    412 size:  4096
10
-ret: 0         st:-1 flags:0  ts: 2.576668
11
-ret: 0         st: 0 flags:1 dts: 2.577000 pts: 2.577000 pos: 455845 size:  4096
12
-ret: 0         st:-1 flags:1  ts: 1.470835
13
-ret: 0         st: 0 flags:1 dts: 1.463000 pts: 1.463000 pos: 258901 size:  4096
14
-ret: 0         st: 0 flags:0  ts: 0.365000
15
-ret: 0         st: 0 flags:1 dts: 0.372000 pts: 0.372000 pos:  66060 size:  4096
16
-ret: 0         st: 0 flags:1  ts:-0.741000
17
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:    412 size:  4096
18
-ret: 0         st:-1 flags:0  ts: 2.153336
19
-ret: 0         st: 0 flags:1 dts: 2.159000 pts: 2.159000 pos: 381991 size:  4096
20
-ret: 0         st:-1 flags:1  ts: 1.047503
21
-ret: 0         st: 0 flags:1 dts: 1.045000 pts: 1.045000 pos: 185047 size:  4096
22
-ret: 0         st: 0 flags:0  ts:-0.058000
23
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:    412 size:  4096
24
-ret: 0         st: 0 flags:1  ts: 2.836000
25
-ret: 0         st: 0 flags:1 dts: 2.833000 pts: 2.833000 pos: 500978 size:  4096
26
-ret: 0         st:-1 flags:0  ts: 1.730004
27
-ret: 0         st: 0 flags:1 dts: 1.741000 pts: 1.741000 pos: 308137 size:  4096
28
-ret: 0         st:-1 flags:1  ts: 0.624171
29
-ret: 0         st: 0 flags:1 dts: 0.604000 pts: 0.604000 pos: 107090 size:  4096
30
-ret: 0         st: 0 flags:0  ts:-0.482000
31
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:    412 size:  4096
32
-ret: 0         st: 0 flags:1  ts: 2.413000
33
-ret: 0         st: 0 flags:1 dts: 2.392000 pts: 2.392000 pos: 423021 size:  4096
34
-ret: 0         st:-1 flags:0  ts: 1.306672
35
-ret: 0         st: 0 flags:1 dts: 1.324000 pts: 1.324000 pos: 234283 size:  4096
36
-ret: 0         st:-1 flags:1  ts: 0.200839
37
-ret: 0         st: 0 flags:1 dts: 0.186000 pts: 0.186000 pos:  33236 size:  4096
38
-ret: 0         st: 0 flags:0  ts:-0.905000
39
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:    412 size:  4096
40
-ret: 0         st: 0 flags:1  ts: 1.989000
41
-ret: 0         st: 0 flags:1 dts: 1.974000 pts: 1.974000 pos: 349167 size:  4096
42
-ret: 0         st:-1 flags:0  ts: 0.883340
43
-ret: 0         st: 0 flags:1 dts: 0.906000 pts: 0.906000 pos: 160429 size:  4096
44
-ret: 0         st:-1 flags:1  ts:-0.222493
45
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:    412 size:  4096
46
-ret: 0         st: 0 flags:0  ts: 2.672000
47
-ret: 0         st: 0 flags:1 dts: 2.694000 pts: 2.694000 pos: 476360 size:  4096
48
-ret: 0         st: 0 flags:1  ts: 1.566000
49
-ret: 0         st: 0 flags:1 dts: 1.556000 pts: 1.556000 pos: 275313 size:  4096
50
-ret: 0         st:-1 flags:0  ts: 0.460008
51
-ret: 0         st: 0 flags:1 dts: 0.464000 pts: 0.464000 pos:  82472 size:  4096
52
-ret: 0         st:-1 flags:1  ts:-0.645825
53
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:    412 size:  4096