History

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

Michael Niedermayer committed 14 years ago

Commit 7b0b10c2 parents 8b08f81 04403ec42 files · +466 −491Browse files

Unified · Split

42 files
  1. Changelog +1 −0
  2. libavcodec/arm/dsputil_init_neon.c +51 −26
  3. libavcodec/arm/dsputil_neon.S +191 −126
  4. libavcodec/h264.c +1 −1
  5. libavcodec/rv34.c +2 −2
  6. libavformat/applehttpproto.c +18 −22
  7. libavformat/cache.c +2 −9
  8. libavformat/concat.c +7 −13
  9. libavformat/gopher.c +7 −13
  10. libavformat/http.c +1 −1
  11. libavformat/librtmp.c +11 −13
  12. libavformat/md5proto.c +0 −5
  13. libavformat/mmsh.c +10 −13
  14. libavformat/mmst.c +6 −9
  15. libavformat/pmpdec.c +12 −7
  16. libavformat/rtmpproto.c +8 −12
  17. libavformat/rtpdec_g726.c +2 −4
  18. libavformat/rtpenc.c +18 −10
  19. libavformat/rtpproto.c +2 −8
  20. libavformat/sdp.c +8 −0
  21. libavformat/tcp.c +2 −8
  22. libavformat/udp.c +2 −8
  23. libswscale/utils.c +1 −0
  24. tests/codec-regression.sh +43 −7
  25. tests/ref/acodec/pcm +0 −68
  26. tests/ref/acodec/pcm_alaw +4 −0
  27. tests/ref/acodec/pcm_f32be +4 −0
  28. tests/ref/acodec/pcm_f32le +4 −0
  29. tests/ref/acodec/pcm_f64be +4 −0
  30. tests/ref/acodec/pcm_f64le +4 −0
  31. tests/ref/acodec/pcm_mulaw +4 −0
  32. tests/ref/acodec/pcm_s16be +4 −0
  33. tests/ref/acodec/pcm_s16le +4 −0
  34. tests/ref/acodec/pcm_s24be +4 −0
  35. tests/ref/acodec/pcm_s24daud +4 −0
  36. tests/ref/acodec/pcm_s24le +4 −0
  37. tests/ref/acodec/pcm_s32be +4 −0
  38. tests/ref/acodec/pcm_s32le +4 −0
  39. tests/ref/acodec/pcm_s8 +4 −0
  40. tests/ref/acodec/pcm_u8 +4 −0
  41. tests/ref/seek/pcm_s16be_mkv +0 −53
  42. tests/ref/seek/pcm_s16le_mkv +0 −53
Changelog+1−0
@@ -126,6 +126,7 @@ easier to use. The changes are: · 125 unmodified lines
126- IFF Amiga Continuous Bitmap (ACBM) decoder126- IFF Amiga Continuous Bitmap (ACBM) decoder
127- ass filter127- ass filter
128- CRI ADX audio format demuxer128- CRI ADX audio format demuxer
129- Playstation Portable PMP format demuxer
129 130
130 131
131version 0.8:132version 0.8:
libavcodec/arm/dsputil_init_neon.c+51−26
@@ -53,7 +53,19 @@ void ff_put_pixels8_y2_no_rnd_neon(uint8_t *, const uint8_t *, int, int); · 52 unmodified lines
53void ff_put_pixels8_xy2_no_rnd_neon(uint8_t *, const uint8_t *, int, int);53void ff_put_pixels8_xy2_no_rnd_neon(uint8_t *, const uint8_t *, int, int);
54 54
55void ff_avg_pixels16_neon(uint8_t *, const uint8_t *, int, int);55void ff_avg_pixels16_neon(uint8_t *, const uint8_t *, int, int);
56void ff_avg_pixels16_x2_neon(uint8_t *, const uint8_t *, int, int);
57void ff_avg_pixels16_y2_neon(uint8_t *, const uint8_t *, int, int);
58void ff_avg_pixels16_xy2_neon(uint8_t *, const uint8_t *, int, int);
56void ff_avg_pixels8_neon(uint8_t *, const uint8_t *, int, int);59void ff_avg_pixels8_neon(uint8_t *, const uint8_t *, int, int);
60void ff_avg_pixels8_x2_neon(uint8_t *, const uint8_t *, int, int);
61void ff_avg_pixels8_y2_neon(uint8_t *, const uint8_t *, int, int);
62void ff_avg_pixels8_xy2_neon(uint8_t *, const uint8_t *, int, int);
63void ff_avg_pixels16_x2_no_rnd_neon(uint8_t *, const uint8_t *, int, int);
64void ff_avg_pixels16_y2_no_rnd_neon(uint8_t *, const uint8_t *, int, int);
65void ff_avg_pixels16_xy2_no_rnd_neon(uint8_t *, const uint8_t *, int, int);
66void ff_avg_pixels8_x2_no_rnd_neon(uint8_t *, const uint8_t *, int, int);
67void ff_avg_pixels8_y2_no_rnd_neon(uint8_t *, const uint8_t *, int, int);
68void ff_avg_pixels8_xy2_no_rnd_neon(uint8_t *, const uint8_t *, int, int);
57 69
58void ff_add_pixels_clamped_neon(const DCTELEM *, uint8_t *, int);70void ff_add_pixels_clamped_neon(const DCTELEM *, uint8_t *, int);
59void ff_put_pixels_clamped_neon(const DCTELEM *, uint8_t *, int);71void ff_put_pixels_clamped_neon(const DCTELEM *, uint8_t *, int);
@@ -189,37 +201,51 @@ void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx) · 129 unmodified lines
189 }201 }
190 202
191 if (!high_bit_depth) {203 if (!high_bit_depth) {
192 c->clear_block = ff_clear_block_neon;204 c->clear_block = ff_clear_block_neon;
193 c->clear_blocks = ff_clear_blocks_neon;205 c->clear_blocks = ff_clear_blocks_neon;
194 206
195 c->put_pixels_tab[0][0] = ff_put_pixels16_neon;207 c->put_pixels_tab[0][0] = ff_put_pixels16_neon;
196 c->put_pixels_tab[0][1] = ff_put_pixels16_x2_neon;208 c->put_pixels_tab[0][1] = ff_put_pixels16_x2_neon;
197 c->put_pixels_tab[0][2] = ff_put_pixels16_y2_neon;209 c->put_pixels_tab[0][2] = ff_put_pixels16_y2_neon;
198 c->put_pixels_tab[0][3] = ff_put_pixels16_xy2_neon;210 c->put_pixels_tab[0][3] = ff_put_pixels16_xy2_neon;
199 c->put_pixels_tab[1][0] = ff_put_pixels8_neon;211 c->put_pixels_tab[1][0] = ff_put_pixels8_neon;
200 c->put_pixels_tab[1][1] = ff_put_pixels8_x2_neon;212 c->put_pixels_tab[1][1] = ff_put_pixels8_x2_neon;
201 c->put_pixels_tab[1][2] = ff_put_pixels8_y2_neon;213 c->put_pixels_tab[1][2] = ff_put_pixels8_y2_neon;
202 c->put_pixels_tab[1][3] = ff_put_pixels8_xy2_neon;214 c->put_pixels_tab[1][3] = ff_put_pixels8_xy2_neon;
203 215
204 c->put_no_rnd_pixels_tab[0][0] = ff_put_pixels16_neon;216 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;217 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;218 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;219 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;220 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;221 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;222 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;223 c->put_no_rnd_pixels_tab[1][3] = ff_put_pixels8_xy2_no_rnd_neon;
212 224
213 c->avg_pixels_tab[0][0] = ff_avg_pixels16_neon;225 c->avg_pixels_tab[0][0] = ff_avg_pixels16_neon;
214 c->avg_pixels_tab[1][0] = ff_avg_pixels8_neon;226 c->avg_pixels_tab[0][1] = ff_avg_pixels16_x2_neon;
227 c->avg_pixels_tab[0][2] = ff_avg_pixels16_y2_neon;
228 c->avg_pixels_tab[0][3] = ff_avg_pixels16_xy2_neon;
229 c->avg_pixels_tab[1][0] = ff_avg_pixels8_neon;
230 c->avg_pixels_tab[1][1] = ff_avg_pixels8_x2_neon;
231 c->avg_pixels_tab[1][2] = ff_avg_pixels8_y2_neon;
232 c->avg_pixels_tab[1][3] = ff_avg_pixels8_xy2_neon;
233
234 c->avg_no_rnd_pixels_tab[0][0] = ff_avg_pixels16_neon;
235 c->avg_no_rnd_pixels_tab[0][1] = ff_avg_pixels16_x2_no_rnd_neon;
236 c->avg_no_rnd_pixels_tab[0][2] = ff_avg_pixels16_y2_no_rnd_neon;
237 c->avg_no_rnd_pixels_tab[0][3] = ff_avg_pixels16_xy2_no_rnd_neon;
238 c->avg_no_rnd_pixels_tab[1][0] = ff_avg_pixels8_neon;
239 c->avg_no_rnd_pixels_tab[1][1] = ff_avg_pixels8_x2_no_rnd_neon;
240 c->avg_no_rnd_pixels_tab[1][2] = ff_avg_pixels8_y2_no_rnd_neon;
241 c->avg_no_rnd_pixels_tab[1][3] = ff_avg_pixels8_xy2_no_rnd_neon;
215 }242 }
216 243
217 c->add_pixels_clamped = ff_add_pixels_clamped_neon;244 c->add_pixels_clamped = ff_add_pixels_clamped_neon;
218 c->put_pixels_clamped = ff_put_pixels_clamped_neon;245 c->put_pixels_clamped = ff_put_pixels_clamped_neon;
219 c->put_signed_pixels_clamped = ff_put_signed_pixels_clamped_neon;246 c->put_signed_pixels_clamped = ff_put_signed_pixels_clamped_neon;
220 247
221 if (CONFIG_H264_DECODER) {248 if (CONFIG_H264_DECODER && !high_bit_depth) {
222 if (!high_bit_depth) {
223 c->put_h264_chroma_pixels_tab[0] = ff_put_h264_chroma_mc8_neon;249 c->put_h264_chroma_pixels_tab[0] = ff_put_h264_chroma_mc8_neon;
224 c->put_h264_chroma_pixels_tab[1] = ff_put_h264_chroma_mc4_neon;250 c->put_h264_chroma_pixels_tab[1] = ff_put_h264_chroma_mc4_neon;
225 c->put_h264_chroma_pixels_tab[2] = ff_put_h264_chroma_mc2_neon;251 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) · 69 unmodified lines
295 c->avg_h264_qpel_pixels_tab[1][13] = ff_avg_h264_qpel8_mc13_neon;321 c->avg_h264_qpel_pixels_tab[1][13] = ff_avg_h264_qpel8_mc13_neon;
296 c->avg_h264_qpel_pixels_tab[1][14] = ff_avg_h264_qpel8_mc23_neon;322 c->avg_h264_qpel_pixels_tab[1][14] = ff_avg_h264_qpel8_mc23_neon;
297 c->avg_h264_qpel_pixels_tab[1][15] = ff_avg_h264_qpel8_mc33_neon;323 c->avg_h264_qpel_pixels_tab[1][15] = ff_avg_h264_qpel8_mc33_neon;
298 }
299 }324 }
300 325
301 if (CONFIG_VP3_DECODER) {326 if (CONFIG_VP3_DECODER) {
libavcodec/arm/dsputil_neon.S+191−126
@@ -40,75 +40,89 @@ function ff_clear_blocks_neon, export=1 · 39 unmodified lines
40 bx lr40 bx lr
41endfunc41endfunc
42 42
43 .macro pixels16 avg=043.macro pixels16 rnd=1, avg=0
44.if \avg44 .if \avg
45 mov ip, r045 mov r12, r0
46.endif46 .endif
471: vld1.64 {d0, d1}, [r1], r2471: vld1.64 {q0}, [r1], r2
48 vld1.64 {d2, d3}, [r1], r248 vld1.64 {q1}, [r1], r2
49 vld1.64 {d4, d5}, [r1], r249 vld1.64 {q2}, [r1], r2
50 pld [r1, r2, lsl #2]50 pld [r1, r2, lsl #2]
51 vld1.64 {d6, d7}, [r1], r251 vld1.64 {q3}, [r1], r2
52 pld [r1]52 pld [r1]
53 pld [r1, r2]53 pld [r1, r2]
54 pld [r1, r2, lsl #1]54 pld [r1, r2, lsl #1]
55.if \avg55 .if \avg
56 vld1.64 {d16,d17}, [ip,:128], r256 vld1.64 {q8}, [r12,:128], r2
57 vrhadd.u8 q0, q0, q857 vrhadd.u8 q0, q0, q8
58 vld1.64 {d18,d19}, [ip,:128], r258 vld1.64 {q9}, [r12,:128], r2
59 vrhadd.u8 q1, q1, q959 vrhadd.u8 q1, q1, q9
60 vld1.64 {d20,d21}, [ip,:128], r260 vld1.64 {q10}, [r12,:128], r2
61 vrhadd.u8 q2, q2, q1061 vrhadd.u8 q2, q2, q10
62 vld1.64 {d22,d23}, [ip,:128], r262 vld1.64 {q11}, [r12,:128], r2
63 vrhadd.u8 q3, q3, q1163 vrhadd.u8 q3, q3, q11
64.endif64 .endif
65 subs r3, r3, #465 subs r3, r3, #4
66 vst1.64 {d0, d1}, [r0,:128], r266 vst1.64 {q0}, [r0,:128], r2
67 vst1.64 {d2, d3}, [r0,:128], r267 vst1.64 {q1}, [r0,:128], r2
68 vst1.64 {d4, d5}, [r0,:128], r268 vst1.64 {q2}, [r0,:128], r2
69 vst1.64 {d6, d7}, [r0,:128], r269 vst1.64 {q3}, [r0,:128], r2
70 bne 1b70 bne 1b
71 bx lr71 bx lr
72 .endm72.endm
73 73
74 .macro pixels16_x2 vhadd=vrhadd.u874.macro pixels16_x2 rnd=1, avg=0
751: vld1.64 {d0-d2}, [r1], r2751: vld1.64 {d0-d2}, [r1], r2
76 vld1.64 {d4-d6}, [r1], r276 vld1.64 {d4-d6}, [r1], r2
77 pld [r1]77 pld [r1]
78 pld [r1, r2]78 pld [r1, r2]
79 subs r3, r3, #279 subs r3, r3, #2
80 vext.8 q1, q0, q1, #180 vext.8 q1, q0, q1, #1
81 \vhadd q0, q0, q181 avg q0, q0, q1
82 vext.8 q3, q2, q3, #182 vext.8 q3, q2, q3, #1
83 \vhadd q2, q2, q383 avg q2, q2, q3
84 vst1.64 {d0, d1}, [r0,:128], r284 .if \avg
85 vst1.64 {d4, d5}, [r0,:128], r285 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 bne 1b93 bne 1b
87 bx lr94 bx lr
88 .endm95.endm
89 96
90 .macro pixels16_y2 vhadd=vrhadd.u897.macro pixels16_y2 rnd=1, avg=0
91 vld1.64 {d0, d1}, [r1], r298 vld1.64 {q0}, [r1], r2
92 vld1.64 {d2, d3}, [r1], r299 vld1.64 {q1}, [r1], r2
931: subs r3, r3, #21001: subs r3, r3, #2
94 \vhadd q2, q0, q1101 avg q2, q0, q1
95 vld1.64 {d0, d1}, [r1], r2102 vld1.64 {q0}, [r1], r2
96 \vhadd q3, q0, q1103 avg q3, q0, q1
97 vld1.64 {d2, d3}, [r1], r2104 vld1.64 {q1}, [r1], r2
98 pld [r1]105 pld [r1]
99 pld [r1, r2]106 pld [r1, r2]
100 vst1.64 {d4, d5}, [r0,:128], r2107 .if \avg
101 vst1.64 {d6, d7}, [r0,:128], r2108 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 bne 1b116 bne 1b
103 bx lr117 bx lr
104 .endm118.endm
105 119
106 .macro pixels16_xy2 vshrn=vrshrn.u16 no_rnd=0120.macro pixels16_xy2 rnd=1, avg=0
107 vld1.64 {d0-d2}, [r1], r2121 vld1.64 {d0-d2}, [r1], r2
108 vld1.64 {d4-d6}, [r1], r2122 vld1.64 {d4-d6}, [r1], r2
109.if \no_rnd123 .ifeq \rnd
110 vmov.i16 q13, #1124 vmov.i16 q13, #1
111.endif125 .endif
112 pld [r1]126 pld [r1]
113 pld [r1, r2]127 pld [r1, r2]
114 vext.8 q1, q0, q1, #1128 vext.8 q1, q0, q1, #1
@@ -118,109 +132,129 @@ endfunc · 3 unmodified lines
118 vaddl.u8 q9, d4, d6132 vaddl.u8 q9, d4, d6
119 vaddl.u8 q11, d5, d7133 vaddl.u8 q11, d5, d7
1201: subs r3, r3, #21341: subs r3, r3, #2
121 vld1.64 {d0-d2}, [r1], r2135 vld1.64 {d0-d2}, [r1], r2
122 vadd.u16 q12, q8, q9136 vadd.u16 q12, q8, q9
123 pld [r1]137 pld [r1]
124.if \no_rnd138 .ifeq \rnd
125 vadd.u16 q12, q12, q13139 vadd.u16 q12, q12, q13
126.endif140 .endif
127 vext.8 q15, q0, q1, #1141 vext.8 q15, q0, q1, #1
128 vadd.u16 q1 , q10, q11142 vadd.u16 q1 , q10, q11
129 \vshrn d28, q12, #2143 shrn d28, q12, #2
130.if \no_rnd144 .ifeq \rnd
131 vadd.u16 q1, q1, q13145 vadd.u16 q1, q1, q13
132.endif146 .endif
133 \vshrn d29, q1, #2147 shrn d29, q1, #2
148 .if \avg
149 vld1.8 {q8}, [r0,:128]
150 vrhadd.u8 q14, q14, q8
151 .endif
134 vaddl.u8 q8, d0, d30152 vaddl.u8 q8, d0, d30
135 vld1.64 {d2-d4}, [r1], r2153 vld1.64 {d2-d4}, [r1], r2
136 vaddl.u8 q10, d1, d31154 vaddl.u8 q10, d1, d31
137 vst1.64 {d28,d29}, [r0,:128], r2155 vst1.64 {q14}, [r0,:128], r2
138 vadd.u16 q12, q8, q9156 vadd.u16 q12, q8, q9
139 pld [r1, r2]157 pld [r1, r2]
140.if \no_rnd158 .ifeq \rnd
141 vadd.u16 q12, q12, q13159 vadd.u16 q12, q12, q13
142.endif160 .endif
143 vext.8 q2, q1, q2, #1161 vext.8 q2, q1, q2, #1
144 vadd.u16 q0, q10, q11162 vadd.u16 q0, q10, q11
145 \vshrn d30, q12, #2163 shrn d30, q12, #2
146.if \no_rnd164 .ifeq \rnd
147 vadd.u16 q0, q0, q13165 vadd.u16 q0, q0, q13
148.endif166 .endif
149 \vshrn d31, q0, #2167 shrn d31, q0, #2
168 .if \avg
169 vld1.8 {q9}, [r0,:128]
170 vrhadd.u8 q15, q15, q9
171 .endif
150 vaddl.u8 q9, d2, d4172 vaddl.u8 q9, d2, d4
151 vaddl.u8 q11, d3, d5173 vaddl.u8 q11, d3, d5
152 vst1.64 {d30,d31}, [r0,:128], r2174 vst1.64 {q15}, [r0,:128], r2
153 bgt 1b175 bgt 1b
154 bx lr176 bx lr
155 .endm177.endm
156 178
157 .macro pixels8 avg=0179.macro pixels8 rnd=1, avg=0
1581: vld1.64 {d0}, [r1], r21801: vld1.64 {d0}, [r1], r2
159 vld1.64 {d1}, [r1], r2181 vld1.64 {d1}, [r1], r2
160 vld1.64 {d2}, [r1], r2182 vld1.64 {d2}, [r1], r2
161 pld [r1, r2, lsl #2]183 pld [r1, r2, lsl #2]
162 vld1.64 {d3}, [r1], r2184 vld1.64 {d3}, [r1], r2
163 pld [r1]185 pld [r1]
164 pld [r1, r2]186 pld [r1, r2]
165 pld [r1, r2, lsl #1]187 pld [r1, r2, lsl #1]
166.if \avg188 .if \avg
167 vld1.64 {d4}, [r0,:64], r2189 vld1.64 {d4}, [r0,:64], r2
168 vrhadd.u8 d0, d0, d4190 vrhadd.u8 d0, d0, d4
169 vld1.64 {d5}, [r0,:64], r2191 vld1.64 {d5}, [r0,:64], r2
170 vrhadd.u8 d1, d1, d5192 vrhadd.u8 d1, d1, d5
171 vld1.64 {d6}, [r0,:64], r2193 vld1.64 {d6}, [r0,:64], r2
172 vrhadd.u8 d2, d2, d6194 vrhadd.u8 d2, d2, d6
173 vld1.64 {d7}, [r0,:64], r2195 vld1.64 {d7}, [r0,:64], r2
174 vrhadd.u8 d3, d3, d7196 vrhadd.u8 d3, d3, d7
175 sub r0, r0, r2, lsl #2197 sub r0, r0, r2, lsl #2
176.endif198 .endif
177 subs r3, r3, #4199 subs r3, r3, #4
178 vst1.64 {d0}, [r0,:64], r2200 vst1.64 {d0}, [r0,:64], r2
179 vst1.64 {d1}, [r0,:64], r2201 vst1.64 {d1}, [r0,:64], r2
180 vst1.64 {d2}, [r0,:64], r2202 vst1.64 {d2}, [r0,:64], r2
181 vst1.64 {d3}, [r0,:64], r2203 vst1.64 {d3}, [r0,:64], r2
182 bne 1b204 bne 1b
183 bx lr205 bx lr
184 .endm206.endm
185 207
186 .macro pixels8_x2 vhadd=vrhadd.u8208.macro pixels8_x2 rnd=1, avg=0
1871: vld1.64 {d0, d1}, [r1], r22091: vld1.64 {q0}, [r1], r2
188 vext.8 d1, d0, d1, #1210 vext.8 d1, d0, d1, #1
189 vld1.64 {d2, d3}, [r1], r2211 vld1.64 {q1}, [r1], r2
190 vext.8 d3, d2, d3, #1212 vext.8 d3, d2, d3, #1
191 pld [r1]213 pld [r1]
192 pld [r1, r2]214 pld [r1, r2]
193 subs r3, r3, #2215 subs r3, r3, #2
194 vswp d1, d2216 vswp d1, d2
195 \vhadd q0, q0, q1217 avg q0, q0, q1
196 vst1.64 {d0}, [r0,:64], r2218 .if \avg
197 vst1.64 {d1}, [r0,:64], r2219 vld1.8 {d4}, [r0,:64], r2
220 vld1.8 {d5}, [r0,:64]
221 vrhadd.u8 q0, q0, q2
222 sub r0, r0, r2
223 .endif
224 vst1.64 {d0}, [r0,:64], r2
225 vst1.64 {d1}, [r0,:64], r2
198 bne 1b226 bne 1b
199 bx lr227 bx lr
200 .endm228.endm
201 229
202 .macro pixels8_y2 vhadd=vrhadd.u8230.macro pixels8_y2 rnd=1, avg=0
203 vld1.64 {d0}, [r1], r2231 vld1.64 {d0}, [r1], r2
204 vld1.64 {d1}, [r1], r2232 vld1.64 {d1}, [r1], r2
2051: subs r3, r3, #22331: subs r3, r3, #2
206 \vhadd d4, d0, d1234 avg d4, d0, d1
207 vld1.64 {d0}, [r1], r2235 vld1.64 {d0}, [r1], r2
208 \vhadd d5, d0, d1236 avg d5, d0, d1
209 vld1.64 {d1}, [r1], r2237 vld1.64 {d1}, [r1], r2
210 pld [r1]238 pld [r1]
211 pld [r1, r2]239 pld [r1, r2]
212 vst1.64 {d4}, [r0,:64], r2240 .if \avg
213 vst1.64 {d5}, [r0,:64], r2241 vld1.8 {d2}, [r0,:64], r2
242 vld1.8 {d3}, [r0,:64]
243 vrhadd.u8 q2, q2, q1
244 sub r0, r0, r2
245 .endif
246 vst1.64 {d4}, [r0,:64], r2
247 vst1.64 {d5}, [r0,:64], r2
214 bne 1b248 bne 1b
215 bx lr249 bx lr
216 .endm250.endm
217 251
218 .macro pixels8_xy2 vshrn=vrshrn.u16 no_rnd=0252.macro pixels8_xy2 rnd=1, avg=0
219 vld1.64 {d0, d1}, [r1], r2253 vld1.64 {q0}, [r1], r2
220 vld1.64 {d2, d3}, [r1], r2254 vld1.64 {q1}, [r1], r2
221.if \no_rnd255 .ifeq \rnd
222 vmov.i16 q11, #1256 vmov.i16 q11, #1
223.endif257 .endif
224 pld [r1]258 pld [r1]
225 pld [r1, r2]259 pld [r1, r2]
226 vext.8 d4, d0, d1, #1260 vext.8 d4, d0, d1, #1
@@ -228,70 +262,101 @@ endfunc · 1 unmodified line
228 vaddl.u8 q8, d0, d4262 vaddl.u8 q8, d0, d4
229 vaddl.u8 q9, d2, d6263 vaddl.u8 q9, d2, d6
2301: subs r3, r3, #22641: subs r3, r3, #2
231 vld1.64 {d0, d1}, [r1], r2265 vld1.64 {q0}, [r1], r2
232 pld [r1]266 pld [r1]
233 vadd.u16 q10, q8, q9267 vadd.u16 q10, q8, q9
234 vext.8 d4, d0, d1, #1268 vext.8 d4, d0, d1, #1
235.if \no_rnd269 .ifeq \rnd
236 vadd.u16 q10, q10, q11270 vadd.u16 q10, q10, q11
237.endif271 .endif
238 vaddl.u8 q8, d0, d4272 vaddl.u8 q8, d0, d4
239 \vshrn d5, q10, #2273 shrn d5, q10, #2
240 vld1.64 {d2, d3}, [r1], r2274 vld1.64 {q1}, [r1], r2
241 vadd.u16 q10, q8, q9275 vadd.u16 q10, q8, q9
242 pld [r1, r2]276 pld [r1, r2]
243.if \no_rnd277 .if \avg
278 vld1.8 {d7}, [r0,:64]
279 vrhadd.u8 d5, d5, d7
280 .endif
281 .ifeq \rnd
244 vadd.u16 q10, q10, q11282 vadd.u16 q10, q10, q11
245.endif283 .endif
246 vst1.64 {d5}, [r0,:64], r2284 vst1.64 {d5}, [r0,:64], r2
247 \vshrn d7, q10, #2285 shrn d7, q10, #2
286 .if \avg
287 vld1.8 {d5}, [r0,:64]
288 vrhadd.u8 d7, d7, d5
289 .endif
248 vext.8 d6, d2, d3, #1290 vext.8 d6, d2, d3, #1
249 vaddl.u8 q9, d2, d6291 vaddl.u8 q9, d2, d6
250 vst1.64 {d7}, [r0,:64], r2292 vst1.64 {d7}, [r0,:64], r2
251 bgt 1b293 bgt 1b
252 bx lr294 bx lr
253 .endm295.endm
254 296
255 .macro pixfunc pfx name suf rnd_op args:vararg297.macro pixfunc pfx, name, suf, rnd=1, avg=0
298 .if \rnd
299 .macro avg rd, rn, rm
300 vrhadd.u8 \rd, \rn, \rm
301 .endm
302 .macro shrn rd, rn, rm
303 vrshrn.u16 \rd, \rn, \rm
304 .endm
305 .else
306 .macro avg rd, rn, rm
307 vhadd.u8 \rd, \rn, \rm
308 .endm
309 .macro shrn rd, rn, rm
310 vshrn.u16 \rd, \rn, \rm
311 .endm
312 .endif
256function ff_\pfx\name\suf\()_neon, export=1313function ff_\pfx\name\suf\()_neon, export=1
257 \name \rnd_op \args314 \name \rnd, \avg
258endfunc315endfunc
259 .endm316 .purgem avg
317 .purgem shrn
318.endm
260 319
261 .macro pixfunc2 pfx name args:vararg320.macro pixfunc2 pfx, name, avg=0
262 pixfunc \pfx \name321 pixfunc \pfx, \name, rnd=1, avg=\avg
263 pixfunc \pfx \name \args322 pixfunc \pfx, \name, _no_rnd, rnd=0, avg=\avg
264 .endm323.endm
265 324
266function ff_put_h264_qpel16_mc00_neon, export=1325function ff_put_h264_qpel16_mc00_neon, export=1
267 mov r3, #16326 mov r3, #16
268endfunc327endfunc
269 328
270 pixfunc put_ pixels16329 pixfunc put_, pixels16, avg=0
271 pixfunc2 put_ pixels16_x2, _no_rnd, vhadd.u8330 pixfunc2 put_, pixels16_x2, avg=0
272 pixfunc2 put_ pixels16_y2, _no_rnd, vhadd.u8331 pixfunc2 put_, pixels16_y2, avg=0
273 pixfunc2 put_ pixels16_xy2, _no_rnd, vshrn.u16, 1332 pixfunc2 put_, pixels16_xy2, avg=0
274 333
275function ff_avg_h264_qpel16_mc00_neon, export=1334function ff_avg_h264_qpel16_mc00_neon, export=1
276 mov r3, #16335 mov r3, #16
277endfunc336endfunc
278 337
279 pixfunc avg_ pixels16,, 1338 pixfunc avg_, pixels16, avg=1
339 pixfunc2 avg_, pixels16_x2, avg=1
340 pixfunc2 avg_, pixels16_y2, avg=1
341 pixfunc2 avg_, pixels16_xy2, avg=1
280 342
281function ff_put_h264_qpel8_mc00_neon, export=1343function ff_put_h264_qpel8_mc00_neon, export=1
282 mov r3, #8344 mov r3, #8
283endfunc345endfunc
284 346
285 pixfunc put_ pixels8347 pixfunc put_, pixels8, avg=0
286 pixfunc2 put_ pixels8_x2, _no_rnd, vhadd.u8348 pixfunc2 put_, pixels8_x2, avg=0
287 pixfunc2 put_ pixels8_y2, _no_rnd, vhadd.u8349 pixfunc2 put_, pixels8_y2, avg=0
288 pixfunc2 put_ pixels8_xy2, _no_rnd, vshrn.u16, 1350 pixfunc2 put_, pixels8_xy2, avg=0
289 351
290function ff_avg_h264_qpel8_mc00_neon, export=1352function ff_avg_h264_qpel8_mc00_neon, export=1
291 mov r3, #8353 mov r3, #8
292endfunc354endfunc
293 355
294 pixfunc avg_ pixels8,, 1356 pixfunc avg_, pixels8, avg=1
357 pixfunc2 avg_, pixels8_x2, avg=1
358 pixfunc2 avg_, pixels8_y2, avg=1
359 pixfunc2 avg_, pixels8_xy2, avg=1
295 360
296function ff_put_pixels_clamped_neon, export=1361function ff_put_pixels_clamped_neon, export=1
297 vld1.64 {d16-d19}, [r0,:128]!362 vld1.64 {d16-d19}, [r0,:128]!
libavcodec/h264.c+1−1
@@ -1471,7 +1471,7 @@ static void decode_postinit(H264Context *h, int setup_finished){ · 1470 unmodified lines
1471 1471
1472 if( s->avctx->strict_std_compliance >= FF_COMPLIANCE_STRICT1472 if( s->avctx->strict_std_compliance >= FF_COMPLIANCE_STRICT
1473 && !h->sps.bitstream_restriction_flag){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 s->low_delay= 0;1475 s->low_delay= 0;
1476 }1476 }
1477 1477
libavcodec/rv34.c+2−2
@@ -1112,7 +1112,7 @@ static int rv34_decode_macroblock(RV34DecContext *r, int8_t *intra_types) · 1111 unmodified lines
1112 GetBitContext *gb = &s->gb;1112 GetBitContext *gb = &s->gb;
1113 int cbp, cbp2;1113 int cbp, cbp2;
1114 int i, blknum, blkoff;1114 int i, blknum, blkoff;
1115 DCTELEM block16[64];1115 LOCAL_ALIGNED_16(DCTELEM, block16, [64]);
1116 int luma_dc_quant;1116 int luma_dc_quant;
1117 int dist;1117 int dist;
1118 int mb_pos = s->mb_x + s->mb_y * s->mb_stride;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) · 28 unmodified lines
1147 1147
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];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 if(r->is16){1149 if(r->is16){
1150 memset(block16, 0, sizeof(block16));1150 memset(block16, 0, 64 * sizeof(*block16));
1151 rv34_decode_block(block16, gb, r->cur_vlcs, 3, 0);1151 rv34_decode_block(block16, gb, r->cur_vlcs, 3, 0);
1152 rv34_dequant4x4_16x16(block16, rv34_qscale_tab[luma_dc_quant],rv34_qscale_tab[s->qscale]);1152 rv34_dequant4x4_16x16(block16, rv34_qscale_tab[luma_dc_quant],rv34_qscale_tab[s->qscale]);
1153 r->rdsp.rv34_inv_transform_tab[1](block16);1153 r->rdsp.rv34_inv_transform_tab[1](block16);
libavformat/applehttpproto.c+18−22
@@ -174,19 +174,25 @@ fail: · 173 unmodified lines
174 return ret;174 return ret;
175}175}
176 176
177static 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
177static int applehttp_open(URLContext *h, const char *uri, int flags)187static int applehttp_open(URLContext *h, const char *uri, int flags)
178{188{
179 AppleHTTPContext *s;189 AppleHTTPContext *s = h->priv_data;
180 int ret, i;190 int ret, i;
181 const char *nested_url;191 const char *nested_url;
182 192
183 if (flags & AVIO_FLAG_WRITE)193 if (flags & AVIO_FLAG_WRITE)
184 return AVERROR(ENOSYS);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 h->is_streamed = 1;196 h->is_streamed = 1;
191 197
192 if (av_strstart(uri, "applehttp+", &nested_url)) {198 if (av_strstart(uri, "applehttp+", &nested_url)) {
@@ -229,7 +235,7 @@ static int applehttp_open(URLContext *h, const char *uri, int flags) · 36 unmodified lines
229 return 0;235 return 0;
230 236
231fail:237fail:
232 av_free(s);238 applehttp_close(h);
233 return ret;239 return ret;
234}240}
235 241
@@ -287,21 +293,11 @@ retry: · 51 unmodified lines
287 goto start;293 goto start;
288}294}
289 295
290static 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
301URLProtocol ff_applehttp_protocol = {296URLProtocol ff_applehttp_protocol = {
302 .name = "applehttp",297 .name = "applehttp",
303 .url_open = applehttp_open,298 .url_open = applehttp_open,
304 .url_read = applehttp_read,299 .url_read = applehttp_read,
305 .url_close = applehttp_close,300 .url_close = applehttp_close,
306 .flags = URL_PROTOCOL_FLAG_NESTED_SCHEME,301 .flags = URL_PROTOCOL_FLAG_NESTED_SCHEME,
302 .priv_data_size = sizeof(AppleHTTPContext),
307};303};
libavformat/cache.c+2−9
@@ -53,13 +53,7 @@ static int cache_open(URLContext *h, const char *arg, int flags) · 52 unmodified lines
53{53{
54 int access;54 int access;
55 const char *buffername;55 const char *buffername;
56 Context *c;56 Context *c= h->priv_data;
57
58 c = av_mallocz(sizeof(Context));
59 if (!c) {
60 return AVERROR(ENOMEM);
61 }
62 h->priv_data = c;
63 57
64 av_strstart(arg, "cache:", &arg);58 av_strstart(arg, "cache:", &arg);
65 59
@@ -130,8 +124,6 @@ static int cache_close(URLContext *h) · 64 unmodified lines
130 close(c->fd);124 close(c->fd);
131 ffurl_close(c->inner);125 ffurl_close(c->inner);
132 126
133 av_freep(&h->priv_data);
134
135 return 0;127 return 0;
136}128}
137 129
@@ -141,4 +133,5 @@ URLProtocol ff_cache_protocol = { · 3 unmodified lines
141 .url_read = cache_read,133 .url_read = cache_read,
142 .url_seek = cache_seek,134 .url_seek = cache_seek,
143 .url_close = cache_close,135 .url_close = cache_close,
136 .priv_data_size = sizeof(Context),
144};137};
libavformat/concat.c+7−13
@@ -50,7 +50,6 @@ static av_cold int concat_close(URLContext *h) · 49 unmodified lines
50 err |= ffurl_close(nodes[i].uc);50 err |= ffurl_close(nodes[i].uc);
51 51
52 av_freep(&data->nodes);52 av_freep(&data->nodes);
53 av_freep(&h->priv_data);
54 53
55 return err < 0 ? -1 : 0;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) · 5 unmodified lines
62 int64_t size;61 int64_t size;
63 size_t len, i;62 size_t len, i;
64 URLContext *uc;63 URLContext *uc;
65 struct concat_data *data;64 struct concat_data *data = h->priv_data;
66 struct concat_nodes *nodes;65 struct concat_nodes *nodes;
67 66
68 av_strstart(uri, "concat:", &uri);67 av_strstart(uri, "concat:", &uri);
69 68
70 /* creating data */
71 if (!(data = av_mallocz(sizeof(*data))))
72 return AVERROR(ENOMEM);
73 h->priv_data = data;
74
75 for (i = 0, len = 1; uri[i]; i++)69 for (i = 0, len = 1; uri[i]; i++)
76 if (uri[i] == *AV_CAT_SEPARATOR)70 if (uri[i] == *AV_CAT_SEPARATOR)
77 /* integer overflow */71 /* integer overflow */
@@ -81,7 +75,6 @@ static av_cold int concat_open(URLContext *h, const char *uri, int flags) · 3 unmodified lines
81 }75 }
82 76
83 if (!(nodes = av_malloc(sizeof(*nodes) * len))) {77 if (!(nodes = av_malloc(sizeof(*nodes) * len))) {
84 av_freep(&h->priv_data);
85 return AVERROR(ENOMEM);78 return AVERROR(ENOMEM);
86 } else79 } else
87 data->nodes = nodes;80 data->nodes = nodes;
@@ -191,9 +184,10 @@ static int64_t concat_seek(URLContext *h, int64_t pos, int whence) · 103 unmodified lines
191}184}
192 185
193URLProtocol ff_concat_protocol = {186URLProtocol ff_concat_protocol = {
194 .name = "concat",187 .name = "concat",
195 .url_open = concat_open,188 .url_open = concat_open,
196 .url_read = concat_read,189 .url_read = concat_read,
197 .url_seek = concat_seek,190 .url_seek = concat_seek,
198 .url_close = concat_close,191 .url_close = concat_close,
192 .priv_data_size = sizeof(struct concat_data),
199};193};
libavformat/gopher.c+7−13
@@ -72,24 +72,17 @@ static int gopher_close(URLContext *h) · 71 unmodified lines
72 ffurl_close(s->hd);72 ffurl_close(s->hd);
73 s->hd = NULL;73 s->hd = NULL;
74 }74 }
75 av_freep(&h->priv_data);
76 return 0;75 return 0;
77}76}
78 77
79static int gopher_open(URLContext *h, const char *uri, int flags)78static int gopher_open(URLContext *h, const char *uri, int flags)
80{79{
81 GopherContext *s;80 GopherContext *s = h->priv_data;
82 char hostname[1024], auth[1024], path[1024], buf[1024];81 char hostname[1024], auth[1024], path[1024], buf[1024];
83 int port, err;82 int port, err;
84 83
85 h->is_streamed = 1;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 /* needed in any case to build the host string */86 /* needed in any case to build the host string */
94 av_url_split(NULL, 0, auth, sizeof(auth), hostname, sizeof(hostname), &port,87 av_url_split(NULL, 0, auth, sizeof(auth), hostname, sizeof(hostname), &port,
95 path, sizeof(path), uri);88 path, sizeof(path), uri);
@@ -122,9 +115,10 @@ static int gopher_read(URLContext *h, uint8_t *buf, int size) · 26 unmodified lines
122 115
123 116
124URLProtocol ff_gopher_protocol = {117URLProtocol ff_gopher_protocol = {
125 .name = "gopher",118 .name = "gopher",
126 .url_open = gopher_open,119 .url_open = gopher_open,
127 .url_read = gopher_read,120 .url_read = gopher_read,
128 .url_write = gopher_write,121 .url_write = gopher_write,
129 .url_close = gopher_close,122 .url_close = gopher_close,
123 .priv_data_size = sizeof(GopherContext),
130};124};
libavformat/http.c+1−1
@@ -93,7 +93,7 @@ static int http_open_cnx(URLContext *h) · 92 unmodified lines
93{93{
94 const char *path, *proxy_path, *lower_proto = "tcp", *local_path;94 const char *path, *proxy_path, *lower_proto = "tcp", *local_path;
95 char hostname[1024], hoststr[1024], proto[10];95 char hostname[1024], hoststr[1024], proto[10];
96 char auth[1024], proxyauth[1024];96 char auth[1024], proxyauth[1024] = "";
97 char path1[1024];97 char path1[1024];
98 char buf[1024], urlbuf[1024];98 char buf[1024], urlbuf[1024];
99 int port, use_proxy, err, location_changed = 0, redirects = 0;99 int port, use_proxy, err, location_changed = 0, redirects = 0;
libavformat/librtmp.c+11−13
@@ -52,7 +52,6 @@ static int rtmp_close(URLContext *s) · 51 unmodified lines
52 RTMP *r = s->priv_data;52 RTMP *r = s->priv_data;
53 53
54 RTMP_Close(r);54 RTMP_Close(r);
55 av_free(r);
56 return 0;55 return 0;
57}56}
58 57
@@ -70,13 +69,9 @@ static int rtmp_close(URLContext *s) · 11 unmodified lines
70 */69 */
71static int rtmp_open(URLContext *s, const char *uri, int flags)70static int rtmp_open(URLContext *s, const char *uri, int flags)
72{71{
73 RTMP *r;72 RTMP *r = s->priv_data;
74 int rc;73 int rc;
75 74
76 r = av_mallocz(sizeof(RTMP));
77 if (!r)
78 return AVERROR(ENOMEM);
79
80 switch (av_log_get_level()) {75 switch (av_log_get_level()) {
81 default:76 default:
82 case AV_LOG_FATAL: rc = RTMP_LOGCRIT; break;77 case AV_LOG_FATAL: rc = RTMP_LOGCRIT; break;
@@ -103,11 +98,9 @@ static int rtmp_open(URLContext *s, const char *uri, int flags) · 20 unmodified lines
103 goto fail;98 goto fail;
104 }99 }
105 100
106 s->priv_data = r;
107 s->is_streamed = 1;101 s->is_streamed = 1;
108 return 0;102 return 0;
109fail:103fail:
110 av_free(r);
111 return rc;104 return rc;
112}105}
113 106
@@ -167,7 +160,8 @@ URLProtocol ff_rtmp_protocol = { · 53 unmodified lines
167 .url_close = rtmp_close,160 .url_close = rtmp_close,
168 .url_read_pause = rtmp_read_pause,161 .url_read_pause = rtmp_read_pause,
169 .url_read_seek = rtmp_read_seek,162 .url_read_seek = rtmp_read_seek,
170 .url_get_file_handle = rtmp_get_file_handle163 .url_get_file_handle = rtmp_get_file_handle,
164 .priv_data_size = sizeof(RTMP),
171};165};
172 166
173URLProtocol ff_rtmpt_protocol = {167URLProtocol ff_rtmpt_protocol = {
@@ -178,7 +172,8 @@ URLProtocol ff_rtmpt_protocol = { · 4 unmodified lines
178 .url_close = rtmp_close,172 .url_close = rtmp_close,
179 .url_read_pause = rtmp_read_pause,173 .url_read_pause = rtmp_read_pause,
180 .url_read_seek = rtmp_read_seek,174 .url_read_seek = rtmp_read_seek,
181 .url_get_file_handle = rtmp_get_file_handle175 .url_get_file_handle = rtmp_get_file_handle,
176 .priv_data_size = sizeof(RTMP),
182};177};
183 178
184URLProtocol ff_rtmpe_protocol = {179URLProtocol ff_rtmpe_protocol = {
@@ -189,7 +184,8 @@ URLProtocol ff_rtmpe_protocol = { · 4 unmodified lines
189 .url_close = rtmp_close,184 .url_close = rtmp_close,
190 .url_read_pause = rtmp_read_pause,185 .url_read_pause = rtmp_read_pause,
191 .url_read_seek = rtmp_read_seek,186 .url_read_seek = rtmp_read_seek,
192 .url_get_file_handle = rtmp_get_file_handle187 .url_get_file_handle = rtmp_get_file_handle,
188 .priv_data_size = sizeof(RTMP),
193};189};
194 190
195URLProtocol ff_rtmpte_protocol = {191URLProtocol ff_rtmpte_protocol = {
@@ -200,7 +196,8 @@ URLProtocol ff_rtmpte_protocol = { · 4 unmodified lines
200 .url_close = rtmp_close,196 .url_close = rtmp_close,
201 .url_read_pause = rtmp_read_pause,197 .url_read_pause = rtmp_read_pause,
202 .url_read_seek = rtmp_read_seek,198 .url_read_seek = rtmp_read_seek,
203 .url_get_file_handle = rtmp_get_file_handle199 .url_get_file_handle = rtmp_get_file_handle,
200 .priv_data_size = sizeof(RTMP),
204};201};
205 202
206URLProtocol ff_rtmps_protocol = {203URLProtocol ff_rtmps_protocol = {
@@ -211,5 +208,6 @@ URLProtocol ff_rtmps_protocol = { · 4 unmodified lines
211 .url_close = rtmp_close,208 .url_close = rtmp_close,
212 .url_read_pause = rtmp_read_pause,209 .url_read_pause = rtmp_read_pause,
213 .url_read_seek = rtmp_read_seek,210 .url_read_seek = rtmp_read_seek,
214 .url_get_file_handle = rtmp_get_file_handle211 .url_get_file_handle = rtmp_get_file_handle,
212 .priv_data_size = sizeof(RTMP),
215};213};
libavformat/md5proto.c+0−5
@@ -79,16 +79,11 @@ static int md5_close(URLContext *h) · 78 unmodified lines
79 return err;79 return err;
80}80}
81 81
82static int md5_get_handle(URLContext *h)
83{
84 return (intptr_t)h->priv_data;
85}
86 82
87URLProtocol ff_md5_protocol = {83URLProtocol ff_md5_protocol = {
88 .name = "md5",84 .name = "md5",
89 .url_open = md5_open,85 .url_open = md5_open,
90 .url_write = md5_write,86 .url_write = md5_write,
91 .url_close = md5_close,87 .url_close = md5_close,
92 .url_get_file_handle = md5_get_handle,
93 .priv_data_size = PRIV_SIZE,88 .priv_data_size = PRIV_SIZE,
94};89};
libavformat/mmsh.c+10−13
@@ -69,7 +69,6 @@ static int mmsh_close(URLContext *h) · 68 unmodified lines
69 ffurl_close(mms->mms_hd);69 ffurl_close(mms->mms_hd);
70 av_free(mms->streams);70 av_free(mms->streams);
71 av_free(mms->asf_header);71 av_free(mms->asf_header);
72 av_freep(&h->priv_data);
73 return 0;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 · 142 unmodified lines
218 char httpname[256], path[256], host[128];217 char httpname[256], path[256], host[128];
219 char *stream_selection = NULL;218 char *stream_selection = NULL;
220 char headers[1024];219 char headers[1024];
221 MMSHContext *mmsh;220 MMSHContext *mmsh = h->priv_data;
222 MMSContext *mms;221 MMSContext *mms;
223 222
224 mmsh = h->priv_data = av_mallocz(sizeof(MMSHContext));
225 if (!h->priv_data)
226 return AVERROR(ENOMEM);
227 mmsh->request_seq = h->is_streamed = 1;223 mmsh->request_seq = h->is_streamed = 1;
228 mms = &mmsh->mms;224 mms = &mmsh->mms;
229 av_strlcpy(mmsh->location, uri, sizeof(mmsh->location));225 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 · 33 unmodified lines
263 // close the socket and then reopen it for sending the second play request.259 // close the socket and then reopen it for sending the second play request.
264 ffurl_close(mms->mms_hd);260 ffurl_close(mms->mms_hd);
265 memset(headers, 0, sizeof(headers));261 memset(headers, 0, sizeof(headers));
266 if (ffurl_alloc(&mms->mms_hd, httpname, AVIO_FLAG_READ,262 if ((err = ffurl_alloc(&mms->mms_hd, httpname, AVIO_FLAG_READ,
267 &h->interrupt_callback) < 0) {263 &h->interrupt_callback)) < 0) {
268 return AVERROR(EIO);264 goto fail;
269 }265 }
270 stream_selection = av_mallocz(mms->stream_num * 19 + 1);266 stream_selection = av_mallocz(mms->stream_num * 19 + 1);
271 if (!stream_selection)267 if (!stream_selection)
@@ -403,10 +399,11 @@ static int64_t mmsh_seek(URLContext *h, int64_t pos, int whence) · 131 unmodified lines
403}399}
404 400
405URLProtocol ff_mmsh_protocol = {401URLProtocol ff_mmsh_protocol = {
406 .name = "mmsh",402 .name = "mmsh",
407 .url_open = mmsh_open,403 .url_open = mmsh_open,
408 .url_read = mmsh_read,404 .url_read = mmsh_read,
409 .url_seek = mmsh_seek,405 .url_seek = mmsh_seek,
410 .url_close = mmsh_close,406 .url_close = mmsh_close,
411 .url_read_seek = mmsh_read_seek,407 .url_read_seek = mmsh_read_seek,
408 .priv_data_size = sizeof(MMSHContext),
412};409};
libavformat/mmst.c+6−9
@@ -470,7 +470,6 @@ static int mms_close(URLContext *h) · 469 unmodified lines
470 /* free all separately allocated pointers in mms */470 /* free all separately allocated pointers in mms */
471 av_free(mms->streams);471 av_free(mms->streams);
472 av_free(mms->asf_header);472 av_free(mms->asf_header);
473 av_freep(&h->priv_data);
474 473
475 return 0;474 return 0;
476}475}
@@ -502,15 +501,12 @@ static void clear_stream_buffers(MMSContext *mms) · 25 unmodified lines
502 501
503static int mms_open(URLContext *h, const char *uri, int flags)502static int mms_open(URLContext *h, const char *uri, int flags)
504{503{
505 MMSTContext *mmst;504 MMSTContext *mmst = h->priv_data;
506 MMSContext *mms;505 MMSContext *mms;
507 int port, err;506 int port, err;
508 char tcpname[256];507 char tcpname[256];
509 508
510 h->is_streamed = 1;509 h->is_streamed = 1;
511 mmst = h->priv_data = av_mallocz(sizeof(MMSTContext));
512 if (!h->priv_data)
513 return AVERROR(ENOMEM);
514 mms = &mmst->mms;510 mms = &mmst->mms;
515 511
516 // only for MMS over TCP, so set proto = NULL512 // only for MMS over TCP, so set proto = NULL
@@ -624,8 +620,9 @@ static int mms_read(URLContext *h, uint8_t *buf, int size) · 107 unmodified lines
624}620}
625 621
626URLProtocol ff_mmst_protocol = {622URLProtocol ff_mmst_protocol = {
627 .name = "mmst",623 .name = "mmst",
628 .url_open = mms_open,624 .url_open = mms_open,
629 .url_read = mms_read,625 .url_read = mms_read,
630 .url_close = mms_close,626 .url_close = mms_close,
627 .priv_data_size = sizeof(MMSTContext),
631};628};
libavformat/pmpdec.c+12−7
@@ -38,7 +38,8 @@ static int pmp_probe(AVProbeData *p) { · 37 unmodified lines
38 return 0;38 return 0;
39}39}
40 40
41static int pmp_header(AVFormatContext *s, AVFormatParameters *ap) {41static int pmp_header(AVFormatContext *s, AVFormatParameters *ap)
42{
42 PMPContext *pmp = s->priv_data;43 PMPContext *pmp = s->priv_data;
43 AVIOContext *pb = s->pb;44 AVIOContext *pb = s->pb;
44 int tb_num, tb_den;45 int tb_num, tb_den;
@@ -93,7 +94,6 @@ static int pmp_header(AVFormatContext *s, AVFormatParameters *ap) { · 48 unmodified lines
93 AVStream *ast = avformat_new_stream(s, NULL);94 AVStream *ast = avformat_new_stream(s, NULL);
94 if (!ast)95 if (!ast)
95 return AVERROR(ENOMEM);96 return AVERROR(ENOMEM);
96 ast->id = i;
97 ast->codec->codec_type = AVMEDIA_TYPE_AUDIO;97 ast->codec->codec_type = AVMEDIA_TYPE_AUDIO;
98 ast->codec->codec_id = audio_codec_id;98 ast->codec->codec_id = audio_codec_id;
99 ast->codec->channels = channels;99 ast->codec->channels = channels;
@@ -111,7 +111,8 @@ static int pmp_header(AVFormatContext *s, AVFormatParameters *ap) { · 11 unmodified lines
111 return 0;111 return 0;
112}112}
113 113
114static int pmp_packet(AVFormatContext *s, AVPacket *pkt) {114static int pmp_packet(AVFormatContext *s, AVPacket *pkt)
115{
115 PMPContext *pmp = s->priv_data;116 PMPContext *pmp = s->priv_data;
116 AVIOContext *pb = s->pb;117 AVIOContext *pb = s->pb;
117 int ret = 0;118 int ret = 0;
@@ -128,14 +129,18 @@ static int pmp_packet(AVFormatContext *s, AVPacket *pkt) { · 10 unmodified lines
128 av_fast_malloc(&pmp->packet_sizes,129 av_fast_malloc(&pmp->packet_sizes,
129 &pmp->packet_sizes_alloc,130 &pmp->packet_sizes_alloc,
130 num_packets * sizeof(*pmp->packet_sizes));131 num_packets * sizeof(*pmp->packet_sizes));
132 if (!pmp->packet_sizes_alloc) {
133 av_log(s, AV_LOG_ERROR, "Cannot (re)allocate packet buffer\n");
134 return AVERROR(ENOMEM);
135 }
131 for (i = 0; i < num_packets; i++)136 for (i = 0; i < num_packets; i++)
132 pmp->packet_sizes[i] = avio_rl32(pb);137 pmp->packet_sizes[i] = avio_rl32(pb);
133 }138 }
134 ret = av_get_packet(pb, pkt, pmp->packet_sizes[pmp->current_packet]);139 ret = av_get_packet(pb, pkt, pmp->packet_sizes[pmp->current_packet]);
135 if (ret >= 0) {140 if (ret >= 0) {
136 ret = 0;141 ret = 0;
137 // FIXME: this is a hack that should be remove once142 // FIXME: this is a hack that should be removed once
138 // compute_pkt_fields can handle143 // compute_pkt_fields() can handle timestamps properly
139 if (pmp->cur_stream == 0)144 if (pmp->cur_stream == 0)
140 pkt->dts = s->streams[0]->cur_dts++;145 pkt->dts = s->streams[0]->cur_dts++;
141 pkt->stream_index = pmp->cur_stream;146 pkt->stream_index = pmp->cur_stream;
@@ -146,8 +151,8 @@ static int pmp_packet(AVFormatContext *s, AVPacket *pkt) { · 4 unmodified lines
146 return ret;151 return ret;
147}152}
148 153
149static int pmp_seek(AVFormatContext *s, int stream_index,154static int pmp_seek(AVFormatContext *s, int stream_index, int64_t ts, int flags)
150 int64_t ts, int flags) {155{
151 PMPContext *pmp = s->priv_data;156 PMPContext *pmp = s->priv_data;
152 pmp->cur_stream = 0;157 pmp->cur_stream = 0;
153 // fallback to default seek now158 // fallback to default seek now
libavformat/rtmpproto.c+8−12
@@ -784,7 +784,6 @@ static int rtmp_close(URLContext *h) · 783 unmodified lines
784 784
785 av_freep(&rt->flv_data);785 av_freep(&rt->flv_data);
786 ffurl_close(rt->stream);786 ffurl_close(rt->stream);
787 av_free(rt);
788 return 0;787 return 0;
789}788}
790 789
@@ -799,16 +798,12 @@ static int rtmp_close(URLContext *h) · 8 unmodified lines
799 */798 */
800static int rtmp_open(URLContext *s, const char *uri, int flags)799static int rtmp_open(URLContext *s, const char *uri, int flags)
801{800{
802 RTMPContext *rt;801 RTMPContext *rt = s->priv_data;
803 char proto[8], hostname[256], path[1024], *fname;802 char proto[8], hostname[256], path[1024], *fname;
804 uint8_t buf[2048];803 uint8_t buf[2048];
805 int port;804 int port;
806 int ret;805 int ret;
807 806
808 rt = av_mallocz(sizeof(RTMPContext));
809 if (!rt)
810 return AVERROR(ENOMEM);
811 s->priv_data = rt;
812 rt->is_input = !(flags & AVIO_FLAG_WRITE);807 rt->is_input = !(flags & AVIO_FLAG_WRITE);
813 808
814 av_url_split(proto, sizeof(proto), NULL, 0, hostname, sizeof(hostname), &port,809 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) · 11 unmodified lines
826 821
827 rt->state = STATE_START;822 rt->state = STATE_START;
828 if (rtmp_handshake(s, rt))823 if (rtmp_handshake(s, rt))
829 return -1;824 goto fail;
830 825
831 rt->chunk_size = 128;826 rt->chunk_size = 128;
832 rt->state = STATE_HANDSHAKED;827 rt->state = STATE_HANDSHAKED;
@@ -997,9 +992,10 @@ static int rtmp_write(URLContext *s, const uint8_t *buf, int size) · 164 unmodified lines
997}992}
998 993
999URLProtocol ff_rtmp_protocol = {994URLProtocol ff_rtmp_protocol = {
1000 .name = "rtmp",995 .name = "rtmp",
1001 .url_open = rtmp_open,996 .url_open = rtmp_open,
1002 .url_read = rtmp_read,997 .url_read = rtmp_read,
1003 .url_write = rtmp_write,998 .url_write = rtmp_write,
1004 .url_close = rtmp_close,999 .url_close = rtmp_close,
1000 .priv_data_size = sizeof(RTMPContext),
1005};1001};
libavformat/rtpdec_g726.c+2−4
@@ -27,10 +27,8 @@ static int g726_ ## bitrate ##_init(AVFormatContext *s, int st_index, PayloadCon · 26 unmodified lines
27 AVStream *stream = s->streams[st_index]; \27 AVStream *stream = s->streams[st_index]; \
28 AVCodecContext *codec = stream->codec; \28 AVCodecContext *codec = stream->codec; \
29\29\
30 codec->bit_rate = bitrate*1000; \30 codec->bits_per_coded_sample = bitrate/8; \
31 if (codec->sample_rate) \31 codec->bit_rate = codec->bits_per_coded_sample * codec->sample_rate; \
32 codec->bits_per_coded_sample = \
33 av_clip((codec->bit_rate + codec->sample_rate/2) / codec->sample_rate, 2, 5); \
34\32\
35 return 0; \33 return 0; \
36} \34} \
libavformat/rtpenc.c+18−10
@@ -72,6 +72,7 @@ static int is_supported(enum CodecID id) · 71 unmodified lines
72 case CODEC_ID_THEORA:72 case CODEC_ID_THEORA:
73 case CODEC_ID_VP8:73 case CODEC_ID_VP8:
74 case CODEC_ID_ADPCM_G722:74 case CODEC_ID_ADPCM_G722:
75 case CODEC_ID_ADPCM_G726:
75 return 1;76 return 1;
76 default:77 default:
77 return 0;78 return 0;
@@ -121,7 +122,7 @@ static int rtp_write_header(AVFormatContext *s1) · 43 unmodified lines
121 if (st->codec->frame_size == 0) {122 if (st->codec->frame_size == 0) {
122 av_log(s1, AV_LOG_ERROR, "Cannot respect max delay: frame size = 0\n");123 av_log(s1, AV_LOG_ERROR, "Cannot respect max delay: frame size = 0\n");
123 } else {124 } 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);125 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 }126 }
126 }127 }
127 if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {128 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) · 120 unmodified lines
248/* send an integer number of samples and compute time stamp and fill249/* send an integer number of samples and compute time stamp and fill
249 the rtp send buffer before sending. */250 the rtp send buffer before sending. */
250static void rtp_send_samples(AVFormatContext *s1,251static void rtp_send_samples(AVFormatContext *s1,
251 const uint8_t *buf1, int size, int sample_size)252 const uint8_t *buf1, int size, int sample_size_bits)
252{253{
253 RTPMuxContext *s = s1->priv_data;254 RTPMuxContext *s = s1->priv_data;
254 int len, max_packet_size, n;255 int len, max_packet_size, n;
256 /* Calculate the number of bytes to get samples aligned on a byte border */
257 int aligned_samples_size = sample_size_bits/av_gcd(sample_size_bits, 8);
255 258
256 max_packet_size = (s->max_payload_size / sample_size) * sample_size;259 max_packet_size = (s->max_payload_size / aligned_samples_size) * aligned_samples_size;
257 /* not needed, but who nows */260 /* Not needed, but who knows. Don't check if samples aren't an even number of bytes. */
258 if ((size % sample_size) != 0)261 if ((sample_size_bits % 8) == 0 && ((8 * size) % sample_size_bits) != 0)
259 av_abort();262 av_abort();
260 n = 0;263 n = 0;
261 while (size > 0) {264 while (size > 0) {
@@ -267,7 +270,7 @@ static void rtp_send_samples(AVFormatContext *s1, · 5 unmodified lines
267 s->buf_ptr += len;270 s->buf_ptr += len;
268 buf1 += len;271 buf1 += len;
269 size -= len;272 size -= len;
270 s->timestamp = s->cur_timestamp + n / sample_size;273 s->timestamp = s->cur_timestamp + n * 8 / sample_size_bits;
271 ff_rtp_send_data(s1, s->buf, s->buf_ptr - s->buf, 0);274 ff_rtp_send_data(s1, s->buf, s->buf_ptr - s->buf, 0);
272 n += (s->buf_ptr - s->buf);275 n += (s->buf_ptr - s->buf);
273 }276 }
@@ -394,19 +397,24 @@ static int rtp_write_packet(AVFormatContext *s1, AVPacket *pkt) · 120 unmodified lines
394 case CODEC_ID_PCM_ALAW:397 case CODEC_ID_PCM_ALAW:
395 case CODEC_ID_PCM_U8:398 case CODEC_ID_PCM_U8:
396 case CODEC_ID_PCM_S8:399 case CODEC_ID_PCM_S8:
397 rtp_send_samples(s1, pkt->data, size, 1 * st->codec->channels);400 rtp_send_samples(s1, pkt->data, size, 8 * st->codec->channels);
398 break;401 break;
399 case CODEC_ID_PCM_U16BE:402 case CODEC_ID_PCM_U16BE:
400 case CODEC_ID_PCM_U16LE:403 case CODEC_ID_PCM_U16LE:
401 case CODEC_ID_PCM_S16BE:404 case CODEC_ID_PCM_S16BE:
402 case CODEC_ID_PCM_S16LE:405 case CODEC_ID_PCM_S16LE:
403 rtp_send_samples(s1, pkt->data, size, 2 * st->codec->channels);406 rtp_send_samples(s1, pkt->data, size, 16 * st->codec->channels);
404 break;407 break;
405 case CODEC_ID_ADPCM_G722:408 case CODEC_ID_ADPCM_G722:
406 /* The actual sample size is half a byte per sample, but since the409 /* The actual sample size is half a byte per sample, but since the
407 * stream clock rate is 8000 Hz while the sample rate is 16000 Hz,410 * 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. */411 * the correct parameter for send_samples_bits is 8 bits per stream
409 rtp_send_samples(s1, pkt->data, size, 1 * st->codec->channels);412 * clock. */
413 rtp_send_samples(s1, pkt->data, size, 8 * st->codec->channels);
414 break;
415 case CODEC_ID_ADPCM_G726:
416 rtp_send_samples(s1, pkt->data, size,
417 st->codec->bits_per_coded_sample * st->codec->channels);
410 break;418 break;
411 case CODEC_ID_MP2:419 case CODEC_ID_MP2:
412 case CODEC_ID_MP3:420 case CODEC_ID_MP3:
libavformat/rtpproto.c+2−8
@@ -137,7 +137,7 @@ static void build_udp_url(char *buf, int buf_size, · 136 unmodified lines
137 137
138static int rtp_open(URLContext *h, const char *uri, int flags)138static int rtp_open(URLContext *h, const char *uri, int flags)
139{139{
140 RTPContext *s;140 RTPContext *s = h->priv_data;
141 int rtp_port, rtcp_port,141 int rtp_port, rtcp_port,
142 ttl, connect,142 ttl, connect,
143 local_rtp_port, local_rtcp_port, max_packet_size;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) · 2 unmodified lines
146 char path[1024];146 char path[1024];
147 const char *p;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 av_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &rtp_port,149 av_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &rtp_port,
155 path, sizeof(path), uri);150 path, sizeof(path), uri);
156 /* extract parameters */151 /* extract parameters */
@@ -214,7 +209,6 @@ static int rtp_open(URLContext *h, const char *uri, int flags) · 57 unmodified lines
214 ffurl_close(s->rtp_hd);209 ffurl_close(s->rtp_hd);
215 if (s->rtcp_hd)210 if (s->rtcp_hd)
216 ffurl_close(s->rtcp_hd);211 ffurl_close(s->rtcp_hd);
217 av_free(s);
218 return AVERROR(EIO);212 return AVERROR(EIO);
219}213}
220 214
@@ -291,7 +285,6 @@ static int rtp_close(URLContext *h) · 70 unmodified lines
291 285
292 ffurl_close(s->rtp_hd);286 ffurl_close(s->rtp_hd);
293 ffurl_close(s->rtcp_hd);287 ffurl_close(s->rtcp_hd);
294 av_free(s);
295 return 0;288 return 0;
296}289}
297 290
@@ -337,4 +330,5 @@ URLProtocol ff_rtp_protocol = { · 39 unmodified lines
337 .url_write = rtp_write,330 .url_write = rtp_write,
338 .url_close = rtp_close,331 .url_close = rtp_close,
339 .url_get_file_handle = rtp_get_file_handle,332 .url_get_file_handle = rtp_get_file_handle,
333 .priv_data_size = sizeof(RTPContext),
340};334};
libavformat/sdp.c+8−0
@@ -517,6 +517,14 @@ static char *sdp_write_media_attributes(char *buff, int size, AVCodecContext *c, · 516 unmodified lines
517 payload_type,517 payload_type,
518 8000, c->channels);518 8000, c->channels);
519 break;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 default:528 default:
521 /* Nothing special to do here... */529 /* Nothing special to do here... */
522 break;530 break;
libavformat/tcp.c+2−8
@@ -39,7 +39,7 @@ static int tcp_open(URLContext *h, const char *uri, int flags) · 38 unmodified lines
39{39{
40 struct addrinfo hints, *ai, *cur_ai;40 struct addrinfo hints, *ai, *cur_ai;
41 int port, fd = -1;41 int port, fd = -1;
42 TCPContext *s = NULL;42 TCPContext *s = h->priv_data;
43 int listen_socket = 0;43 int listen_socket = 0;
44 const char *p;44 const char *p;
45 char buf[256];45 char buf[256];
@@ -135,12 +135,6 @@ static int tcp_open(URLContext *h, const char *uri, int flags) · 89 unmodified lines
135 goto fail;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 h->is_streamed = 1;138 h->is_streamed = 1;
145 s->fd = fd;139 s->fd = fd;
146 freeaddrinfo(ai);140 freeaddrinfo(ai);
@@ -193,7 +187,6 @@ static int tcp_close(URLContext *h) · 46 unmodified lines
193{187{
194 TCPContext *s = h->priv_data;188 TCPContext *s = h->priv_data;
195 closesocket(s->fd);189 closesocket(s->fd);
196 av_free(s);
197 return 0;190 return 0;
198}191}
199 192
@@ -210,4 +203,5 @@ URLProtocol ff_tcp_protocol = { · 10 unmodified lines
210 .url_write = tcp_write,203 .url_write = tcp_write,
211 .url_close = tcp_close,204 .url_close = tcp_close,
212 .url_get_file_handle = tcp_get_file_handle,205 .url_get_file_handle = tcp_get_file_handle,
206 .priv_data_size = sizeof(TCPContext),
213};207};
libavformat/udp.c+2−8
@@ -381,7 +381,7 @@ static int udp_open(URLContext *h, const char *uri, int flags) · 380 unmodified lines
381{381{
382 char hostname[1024], localaddr[1024] = "";382 char hostname[1024], localaddr[1024] = "";
383 int port, udp_fd = -1, tmp, bind_ret = -1;383 int port, udp_fd = -1, tmp, bind_ret = -1;
384 UDPContext *s = NULL;384 UDPContext *s = h->priv_data;
385 int is_output;385 int is_output;
386 const char *p;386 const char *p;
387 char buf[256];387 char buf[256];
@@ -394,11 +394,6 @@ static int udp_open(URLContext *h, const char *uri, int flags) · 6 unmodified lines
394 394
395 is_output = !(flags & AVIO_FLAG_READ);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 s->ttl = 16;397 s->ttl = 16;
403 s->buffer_size = is_output ? UDP_TX_BUF_SIZE : UDP_MAX_PKT_SIZE;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) · 128 unmodified lines
533 if (udp_fd >= 0)528 if (udp_fd >= 0)
534 closesocket(udp_fd);529 closesocket(udp_fd);
535 av_fifo_free(s->fifo);530 av_fifo_free(s->fifo);
536 av_free(s);
537 return AVERROR(EIO);531 return AVERROR(EIO);
538}532}
539 533
@@ -614,7 +608,6 @@ static int udp_close(URLContext *h) · 74 unmodified lines
614 udp_leave_multicast_group(s->udp_fd, (struct sockaddr *)&s->dest_addr);608 udp_leave_multicast_group(s->udp_fd, (struct sockaddr *)&s->dest_addr);
615 closesocket(s->udp_fd);609 closesocket(s->udp_fd);
616 av_fifo_free(s->fifo);610 av_fifo_free(s->fifo);
617 av_free(s);
618 return 0;611 return 0;
619}612}
620 613
@@ -625,4 +618,5 @@ URLProtocol ff_udp_protocol = { · 4 unmodified lines
625 .url_write = udp_write,618 .url_write = udp_write,
626 .url_close = udp_close,619 .url_close = udp_close,
627 .url_get_file_handle = udp_get_file_handle,620 .url_get_file_handle = udp_get_file_handle,
621 .priv_data_size = sizeof(UDPContext),
628};622};
libswscale/utils.c+1−0
@@ -44,6 +44,7 @@ · 43 unmodified lines
44#include "libavutil/cpu.h"44#include "libavutil/cpu.h"
45#include "libavutil/avutil.h"45#include "libavutil/avutil.h"
46#include "libavutil/bswap.h"46#include "libavutil/bswap.h"
47#include "libavutil/mathematics.h"
47#include "libavutil/opt.h"48#include "libavutil/opt.h"
48#include "libavutil/pixdesc.h"49#include "libavutil/pixdesc.h"
49#include "libavutil/avassert.h"50#include "libavutil/avassert.h"
tests/codec-regression.sh+43−7
@@ -395,26 +395,62 @@ do_audio_enc_dec() { · 394 unmodified lines
395 do_audio_decoding395 do_audio_decoding
396}396}
397 397
398if [ -n "$do_pcm" ] ; then398if [ -n "$do_pcm_alaw" ] ; then
399do_audio_enc_dec wav s16 pcm_alaw399do_audio_enc_dec wav s16 pcm_alaw
400fi
401if [ -n "$do_pcm_mulaw" ] ; then
400do_audio_enc_dec wav s16 pcm_mulaw402do_audio_enc_dec wav s16 pcm_mulaw
403fi
404if [ -n "$do_pcm_s8" ] ; then
401do_audio_enc_dec mov u8 pcm_s8405do_audio_enc_dec mov u8 pcm_s8
406fi
407if [ -n "$do_pcm_u8" ] ; then
402do_audio_enc_dec wav u8 pcm_u8408do_audio_enc_dec wav u8 pcm_u8
409fi
410if [ -n "$do_pcm_s16be" ] ; then
403do_audio_enc_dec mov s16 pcm_s16be411do_audio_enc_dec mov s16 pcm_s16be
412fi
413if [ -n "$do_pcm_s16le" ] ; then
404do_audio_enc_dec wav s16 pcm_s16le414do_audio_enc_dec wav s16 pcm_s16le
405do_audio_enc_dec mkv s16 pcm_s16be415fi
406do_audio_enc_dec mkv s16 pcm_s16le416if [ -n "$do_pcm_s24be" ] ; then
407do_audio_enc_dec mov s32 pcm_s24be417do_audio_enc_dec mov s32 pcm_s24be
418fi
419if [ -n "$do_pcm_s24le" ] ; then
408do_audio_enc_dec wav s32 pcm_s24le420do_audio_enc_dec wav s32 pcm_s24le
409#do_audio_enc_dec ??? s32 pcm_u24be #no compatible muxer or demuxer421fi
410#do_audio_enc_dec ??? s32 pcm_u24le #no compatible muxer or demuxer422# 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
429if [ -n "$do_pcm_s32be" ] ; then
411do_audio_enc_dec mov s32 pcm_s32be430do_audio_enc_dec mov s32 pcm_s32be
431fi
432if [ -n "$do_pcm_s32le" ] ; then
412do_audio_enc_dec wav s32 pcm_s32le433do_audio_enc_dec wav s32 pcm_s32le
413#do_audio_enc_dec ??? s32 pcm_u32be #no compatible muxer or demuxer434fi
414#do_audio_enc_dec ??? s32 pcm_u32le #no compatible muxer or demuxer435# 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
442if [ -n "$do_pcm_f32be" ] ; then
415do_audio_enc_dec au flt pcm_f32be443do_audio_enc_dec au flt pcm_f32be
444fi
445if [ -n "$do_pcm_f32le" ] ; then
416do_audio_enc_dec wav flt pcm_f32le446do_audio_enc_dec wav flt pcm_f32le
447fi
448if [ -n "$do_pcm_f64be" ] ; then
417do_audio_enc_dec au dbl pcm_f64be449do_audio_enc_dec au dbl pcm_f64be
450fi
451if [ -n "$do_pcm_f64le" ] ; then
418do_audio_enc_dec wav dbl pcm_f64le452do_audio_enc_dec wav dbl pcm_f64le
453fi
454if [ -n "$do_pcm_s24daud" ] ; then
419do_audio_enc_dec 302 s16 pcm_s24daud "-ac 6 -ar 96000"455do_audio_enc_dec 302 s16 pcm_s24daud "-ac 6 -ar 96000"
420fi456fi
tests/ref/acodec/pcm+0−68
@@ -1,68 +0,0 @@
1ede2da07839a00c255a43129922f2c7b *./tests/data/acodec/pcm_alaw.wav
2529258 ./tests/data/acodec/pcm_alaw.wav
3f323f7551ffad91de8613f44dcb198b6 *./tests/data/pcm.acodec.out.wav
4stddev: 101.67 PSNR: 56.19 MAXDIFF: 515 bytes: 1058400/ 1058400
50c2a55850fb46ad5385a69b15b271f10 *./tests/data/acodec/pcm_mulaw.wav
6529258 ./tests/data/acodec/pcm_mulaw.wav
77ae8c3fc804bd574006fd547fe28980c *./tests/data/pcm.acodec.out.wav
8stddev: 103.38 PSNR: 56.04 MAXDIFF: 644 bytes: 1058400/ 1058400
9b78d2a30df75af08ecf86f201281fec2 *./tests/data/acodec/pcm_s8.mov
10529793 ./tests/data/acodec/pcm_s8.mov
11651d4eb8d98dfcdda96ae6c43d8f156b *./tests/data/pcm.acodec.out.wav
12stddev: 147.89 PSNR: 52.93 MAXDIFF: 255 bytes: 1058400/ 1058400
1370fecbae732f81143a560c7315eda49a *./tests/data/acodec/pcm_u8.wav
14529246 ./tests/data/acodec/pcm_u8.wav
15651d4eb8d98dfcdda96ae6c43d8f156b *./tests/data/pcm.acodec.out.wav
16stddev: 147.89 PSNR: 52.93 MAXDIFF: 255 bytes: 1058400/ 1058400
179686b93d1439fc2df991a004ab0298f4 *./tests/data/acodec/pcm_s16be.mov
181058993 ./tests/data/acodec/pcm_s16be.mov
1964151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
20stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
2164151e4bcc2b717aa5a8454d424d6a1f *./tests/data/acodec/pcm_s16le.wav
221058446 ./tests/data/acodec/pcm_s16le.wav
2364151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
24stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
25af717ca95eaca310772eb1238c745d1b *./tests/data/acodec/pcm_s16be.mkv
261060638 ./tests/data/acodec/pcm_s16be.mkv
2764151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
28stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
29c4f51bf32fad2f7af8ea5beedb56168b *./tests/data/acodec/pcm_s16le.mkv
301060638 ./tests/data/acodec/pcm_s16le.mkv
3164151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
32stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
3322c5c3df0a4765e28c205a4fb95b3cdc *./tests/data/acodec/pcm_s24be.mov
341588193 ./tests/data/acodec/pcm_s24be.mov
3564151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
36stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
37a85380fb79b0d4fff38e24ac1e34bb94 *./tests/data/acodec/pcm_s24le.wav
381587668 ./tests/data/acodec/pcm_s24le.wav
3964151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
40stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
41b36ac7a1b4fc28248a565a676e555bd1 *./tests/data/acodec/pcm_s32be.mov
422117393 ./tests/data/acodec/pcm_s32be.mov
4364151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
44stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
45da6ed80f4f40f0082577dea80827e014 *./tests/data/acodec/pcm_s32le.wav
462116868 ./tests/data/acodec/pcm_s32le.wav
4764151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
48stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
49118ff3dc83c62ce9ce669eef57e55bb2 *./tests/data/acodec/pcm_f32be.au
502116824 ./tests/data/acodec/pcm_f32be.au
5164151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
52stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
5346f44f86a18984a832206ab9e29a79f2 *./tests/data/acodec/pcm_f32le.wav
542116880 ./tests/data/acodec/pcm_f32le.wav
5564151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
56stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
578112296b1ed94f72f20d04b1a54850a7 *./tests/data/acodec/pcm_f64be.au
584233624 ./tests/data/acodec/pcm_f64be.au
5964151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
60stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
61ba17c6d1a270e1333e981f239bf7eb45 *./tests/data/acodec/pcm_f64le.wav
624233680 ./tests/data/acodec/pcm_f64le.wav
6364151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm.acodec.out.wav
64stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
651b75d5198ae789ab3c48f7024e08f4a9 *./tests/data/acodec/pcm_s24daud.302
6610368730 ./tests/data/acodec/pcm_s24daud.302
674708f86529c594e29404603c64bb208c *./tests/data/pcm.acodec.out.wav
68stddev: 8967.92 PSNR: 17.28 MAXDIFF:42548 bytes: 6911796/ 1058400
tests/ref/acodec/pcm_alaw+4−0
@@ -0,0 +1,4 @@
1ede2da07839a00c255a43129922f2c7b *./tests/data/acodec/pcm_alaw.wav
2529258 ./tests/data/acodec/pcm_alaw.wav
3f323f7551ffad91de8613f44dcb198b6 *./tests/data/pcm_alaw.acodec.out.wav
4stddev: 101.67 PSNR: 56.19 MAXDIFF: 515 bytes: 1058400/ 1058400
tests/ref/acodec/pcm_f32be+4−0
@@ -0,0 +1,4 @@
1118ff3dc83c62ce9ce669eef57e55bb2 *./tests/data/acodec/pcm_f32be.au
22116824 ./tests/data/acodec/pcm_f32be.au
364151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_f32be.acodec.out.wav
4stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
tests/ref/acodec/pcm_f32le+4−0
@@ -0,0 +1,4 @@
146f44f86a18984a832206ab9e29a79f2 *./tests/data/acodec/pcm_f32le.wav
22116880 ./tests/data/acodec/pcm_f32le.wav
364151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_f32le.acodec.out.wav
4stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
tests/ref/acodec/pcm_f64be+4−0
@@ -0,0 +1,4 @@
18112296b1ed94f72f20d04b1a54850a7 *./tests/data/acodec/pcm_f64be.au
24233624 ./tests/data/acodec/pcm_f64be.au
364151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_f64be.acodec.out.wav
4stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
tests/ref/acodec/pcm_f64le+4−0
@@ -0,0 +1,4 @@
1ba17c6d1a270e1333e981f239bf7eb45 *./tests/data/acodec/pcm_f64le.wav
24233680 ./tests/data/acodec/pcm_f64le.wav
364151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_f64le.acodec.out.wav
4stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
tests/ref/acodec/pcm_mulaw+4−0
@@ -0,0 +1,4 @@
10c2a55850fb46ad5385a69b15b271f10 *./tests/data/acodec/pcm_mulaw.wav
2529258 ./tests/data/acodec/pcm_mulaw.wav
37ae8c3fc804bd574006fd547fe28980c *./tests/data/pcm_mulaw.acodec.out.wav
4stddev: 103.38 PSNR: 56.04 MAXDIFF: 644 bytes: 1058400/ 1058400
tests/ref/acodec/pcm_s16be+4−0
@@ -0,0 +1,4 @@
19686b93d1439fc2df991a004ab0298f4 *./tests/data/acodec/pcm_s16be.mov
21058993 ./tests/data/acodec/pcm_s16be.mov
364151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_s16be.acodec.out.wav
4stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
tests/ref/acodec/pcm_s16le+4−0
@@ -0,0 +1,4 @@
164151e4bcc2b717aa5a8454d424d6a1f *./tests/data/acodec/pcm_s16le.wav
21058446 ./tests/data/acodec/pcm_s16le.wav
364151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_s16le.acodec.out.wav
4stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
tests/ref/acodec/pcm_s24be+4−0
@@ -0,0 +1,4 @@
122c5c3df0a4765e28c205a4fb95b3cdc *./tests/data/acodec/pcm_s24be.mov
21588193 ./tests/data/acodec/pcm_s24be.mov
364151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_s24be.acodec.out.wav
4stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
tests/ref/acodec/pcm_s24daud+4−0
@@ -0,0 +1,4 @@
11b75d5198ae789ab3c48f7024e08f4a9 *./tests/data/acodec/pcm_s24daud.302
210368730 ./tests/data/acodec/pcm_s24daud.302
34708f86529c594e29404603c64bb208c *./tests/data/pcm_s24daud.acodec.out.wav
4stddev: 8967.92 PSNR: 17.28 MAXDIFF:42548 bytes: 6911796/ 1058400
tests/ref/acodec/pcm_s24le+4−0
@@ -0,0 +1,4 @@
1a85380fb79b0d4fff38e24ac1e34bb94 *./tests/data/acodec/pcm_s24le.wav
21587668 ./tests/data/acodec/pcm_s24le.wav
364151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_s24le.acodec.out.wav
4stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
tests/ref/acodec/pcm_s32be+4−0
@@ -0,0 +1,4 @@
1b36ac7a1b4fc28248a565a676e555bd1 *./tests/data/acodec/pcm_s32be.mov
22117393 ./tests/data/acodec/pcm_s32be.mov
364151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_s32be.acodec.out.wav
4stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
tests/ref/acodec/pcm_s32le+4−0
@@ -0,0 +1,4 @@
1da6ed80f4f40f0082577dea80827e014 *./tests/data/acodec/pcm_s32le.wav
22116868 ./tests/data/acodec/pcm_s32le.wav
364151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_s32le.acodec.out.wav
4stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400
tests/ref/acodec/pcm_s8+4−0
@@ -0,0 +1,4 @@
1b78d2a30df75af08ecf86f201281fec2 *./tests/data/acodec/pcm_s8.mov
2529793 ./tests/data/acodec/pcm_s8.mov
3651d4eb8d98dfcdda96ae6c43d8f156b *./tests/data/pcm_s8.acodec.out.wav
4stddev: 147.89 PSNR: 52.93 MAXDIFF: 255 bytes: 1058400/ 1058400
tests/ref/acodec/pcm_u8+4−0
@@ -0,0 +1,4 @@
170fecbae732f81143a560c7315eda49a *./tests/data/acodec/pcm_u8.wav
2529246 ./tests/data/acodec/pcm_u8.wav
3651d4eb8d98dfcdda96ae6c43d8f156b *./tests/data/pcm_u8.acodec.out.wav
4stddev: 147.89 PSNR: 52.93 MAXDIFF: 255 bytes: 1058400/ 1058400
tests/ref/seek/pcm_s16be_mkv+0−53
@@ -1,53 +0,0 @@
1ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 412 size: 4096
2ret: 0 st:-1 flags:0 ts:-1.000000
3ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 412 size: 4096
4ret: 0 st:-1 flags:1 ts: 1.894167
5ret: 0 st: 0 flags:1 dts: 1.881000 pts: 1.881000 pos: 332755 size: 4096
6ret: 0 st: 0 flags:0 ts: 0.788000
7ret: 0 st: 0 flags:1 dts: 0.789000 pts: 0.789000 pos: 139914 size: 4096
8ret: 0 st: 0 flags:1 ts:-0.317000
9ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 412 size: 4096
10ret: 0 st:-1 flags:0 ts: 2.576668
11ret: 0 st: 0 flags:1 dts: 2.577000 pts: 2.577000 pos: 455845 size: 4096
12ret: 0 st:-1 flags:1 ts: 1.470835
13ret: 0 st: 0 flags:1 dts: 1.463000 pts: 1.463000 pos: 258901 size: 4096
14ret: 0 st: 0 flags:0 ts: 0.365000
15ret: 0 st: 0 flags:1 dts: 0.372000 pts: 0.372000 pos: 66060 size: 4096
16ret: 0 st: 0 flags:1 ts:-0.741000
17ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 412 size: 4096
18ret: 0 st:-1 flags:0 ts: 2.153336
19ret: 0 st: 0 flags:1 dts: 2.159000 pts: 2.159000 pos: 381991 size: 4096
20ret: 0 st:-1 flags:1 ts: 1.047503
21ret: 0 st: 0 flags:1 dts: 1.045000 pts: 1.045000 pos: 185047 size: 4096
22ret: 0 st: 0 flags:0 ts:-0.058000
23ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 412 size: 4096
24ret: 0 st: 0 flags:1 ts: 2.836000
25ret: 0 st: 0 flags:1 dts: 2.833000 pts: 2.833000 pos: 500978 size: 4096
26ret: 0 st:-1 flags:0 ts: 1.730004
27ret: 0 st: 0 flags:1 dts: 1.741000 pts: 1.741000 pos: 308137 size: 4096
28ret: 0 st:-1 flags:1 ts: 0.624171
29ret: 0 st: 0 flags:1 dts: 0.604000 pts: 0.604000 pos: 107090 size: 4096
30ret: 0 st: 0 flags:0 ts:-0.482000
31ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 412 size: 4096
32ret: 0 st: 0 flags:1 ts: 2.413000
33ret: 0 st: 0 flags:1 dts: 2.392000 pts: 2.392000 pos: 423021 size: 4096
34ret: 0 st:-1 flags:0 ts: 1.306672
35ret: 0 st: 0 flags:1 dts: 1.324000 pts: 1.324000 pos: 234283 size: 4096
36ret: 0 st:-1 flags:1 ts: 0.200839
37ret: 0 st: 0 flags:1 dts: 0.186000 pts: 0.186000 pos: 33236 size: 4096
38ret: 0 st: 0 flags:0 ts:-0.905000
39ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 412 size: 4096
40ret: 0 st: 0 flags:1 ts: 1.989000
41ret: 0 st: 0 flags:1 dts: 1.974000 pts: 1.974000 pos: 349167 size: 4096
42ret: 0 st:-1 flags:0 ts: 0.883340
43ret: 0 st: 0 flags:1 dts: 0.906000 pts: 0.906000 pos: 160429 size: 4096
44ret: 0 st:-1 flags:1 ts:-0.222493
45ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 412 size: 4096
46ret: 0 st: 0 flags:0 ts: 2.672000
47ret: 0 st: 0 flags:1 dts: 2.694000 pts: 2.694000 pos: 476360 size: 4096
48ret: 0 st: 0 flags:1 ts: 1.566000
49ret: 0 st: 0 flags:1 dts: 1.556000 pts: 1.556000 pos: 275313 size: 4096
50ret: 0 st:-1 flags:0 ts: 0.460008
51ret: 0 st: 0 flags:1 dts: 0.464000 pts: 0.464000 pos: 82472 size: 4096
52ret: 0 st:-1 flags:1 ts:-0.645825
53ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 412 size: 4096
tests/ref/seek/pcm_s16le_mkv+0−53
@@ -1,53 +0,0 @@
1ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 412 size: 4096
2ret: 0 st:-1 flags:0 ts:-1.000000
3ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 412 size: 4096
4ret: 0 st:-1 flags:1 ts: 1.894167
5ret: 0 st: 0 flags:1 dts: 1.881000 pts: 1.881000 pos: 332755 size: 4096
6ret: 0 st: 0 flags:0 ts: 0.788000
7ret: 0 st: 0 flags:1 dts: 0.789000 pts: 0.789000 pos: 139914 size: 4096
8ret: 0 st: 0 flags:1 ts:-0.317000
9ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 412 size: 4096
10ret: 0 st:-1 flags:0 ts: 2.576668
11ret: 0 st: 0 flags:1 dts: 2.577000 pts: 2.577000 pos: 455845 size: 4096
12ret: 0 st:-1 flags:1 ts: 1.470835
13ret: 0 st: 0 flags:1 dts: 1.463000 pts: 1.463000 pos: 258901 size: 4096
14ret: 0 st: 0 flags:0 ts: 0.365000
15ret: 0 st: 0 flags:1 dts: 0.372000 pts: 0.372000 pos: 66060 size: 4096
16ret: 0 st: 0 flags:1 ts:-0.741000
17ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 412 size: 4096
18ret: 0 st:-1 flags:0 ts: 2.153336
19ret: 0 st: 0 flags:1 dts: 2.159000 pts: 2.159000 pos: 381991 size: 4096
20ret: 0 st:-1 flags:1 ts: 1.047503
21ret: 0 st: 0 flags:1 dts: 1.045000 pts: 1.045000 pos: 185047 size: 4096
22ret: 0 st: 0 flags:0 ts:-0.058000
23ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 412 size: 4096
24ret: 0 st: 0 flags:1 ts: 2.836000
25ret: 0 st: 0 flags:1 dts: 2.833000 pts: 2.833000 pos: 500978 size: 4096
26ret: 0 st:-1 flags:0 ts: 1.730004
27ret: 0 st: 0 flags:1 dts: 1.741000 pts: 1.741000 pos: 308137 size: 4096
28ret: 0 st:-1 flags:1 ts: 0.624171
29ret: 0 st: 0 flags:1 dts: 0.604000 pts: 0.604000 pos: 107090 size: 4096
30ret: 0 st: 0 flags:0 ts:-0.482000
31ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 412 size: 4096
32ret: 0 st: 0 flags:1 ts: 2.413000
33ret: 0 st: 0 flags:1 dts: 2.392000 pts: 2.392000 pos: 423021 size: 4096
34ret: 0 st:-1 flags:0 ts: 1.306672
35ret: 0 st: 0 flags:1 dts: 1.324000 pts: 1.324000 pos: 234283 size: 4096
36ret: 0 st:-1 flags:1 ts: 0.200839
37ret: 0 st: 0 flags:1 dts: 0.186000 pts: 0.186000 pos: 33236 size: 4096
38ret: 0 st: 0 flags:0 ts:-0.905000
39ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 412 size: 4096
40ret: 0 st: 0 flags:1 ts: 1.989000
41ret: 0 st: 0 flags:1 dts: 1.974000 pts: 1.974000 pos: 349167 size: 4096
42ret: 0 st:-1 flags:0 ts: 0.883340
43ret: 0 st: 0 flags:1 dts: 0.906000 pts: 0.906000 pos: 160429 size: 4096
44ret: 0 st:-1 flags:1 ts:-0.222493
45ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 412 size: 4096
46ret: 0 st: 0 flags:0 ts: 2.672000
47ret: 0 st: 0 flags:1 dts: 2.694000 pts: 2.694000 pos: 476360 size: 4096
48ret: 0 st: 0 flags:1 ts: 1.566000
49ret: 0 st: 0 flags:1 dts: 1.556000 pts: 1.556000 pos: 275313 size: 4096
50ret: 0 st:-1 flags:0 ts: 0.460008
51ret: 0 st: 0 flags:1 dts: 0.464000 pts: 0.464000 pos: 82472 size: 4096
52ret: 0 st:-1 flags:1 ts:-0.645825
53ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 412 size: 4096

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t