* 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
Unified · Split
| @@ -126,6 +126,7 @@ easier to use. The changes are: · 125 unmodified lines | |||
| 126 | - IFF Amiga Continuous Bitmap (ACBM) decoder | 126 | - IFF Amiga Continuous Bitmap (ACBM) decoder |
| 127 | - ass filter | 127 | - ass filter |
| 128 | - CRI ADX audio format demuxer | 128 | - CRI ADX audio format demuxer |
| 129 | - Playstation Portable PMP format demuxer | ||
| 129 | 130 | ||
| 130 | 131 | ||
| 131 | version 0.8: | 132 | version 0.8: |
| @@ -53,7 +53,19 @@ void ff_put_pixels8_y2_no_rnd_neon(uint8_t *, const uint8_t *, int, int); · 52 unmodified lines | |||
| 53 | void ff_put_pixels8_xy2_no_rnd_neon(uint8_t *, const uint8_t *, int, int); | 53 | void ff_put_pixels8_xy2_no_rnd_neon(uint8_t *, const uint8_t *, int, int); |
| 54 | 54 | ||
| 55 | void ff_avg_pixels16_neon(uint8_t *, const uint8_t *, int, int); | 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 | void ff_avg_pixels8_neon(uint8_t *, const uint8_t *, int, int); | 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 | void ff_add_pixels_clamped_neon(const DCTELEM *, uint8_t *, int); | 70 | void ff_add_pixels_clamped_neon(const DCTELEM *, uint8_t *, int); |
| 59 | void ff_put_pixels_clamped_neon(const DCTELEM *, uint8_t *, int); | 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) · 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) { |
| @@ -40,75 +40,89 @@ function ff_clear_blocks_neon, export=1 · 39 unmodified lines | |||
| 40 | bx lr | 40 | bx lr |
| 41 | endfunc | 41 | endfunc |
| 42 | 42 | ||
| 43 | .macro pixels16 avg=0 | 43 | .macro pixels16 rnd=1, avg=0 |
| 44 | .if \avg | 44 | .if \avg |
| 45 | mov ip, r0 | 45 | mov r12, r0 |
| 46 | .endif | 46 | .endif |
| 47 | 1: vld1.64 {d0, d1}, [r1], r2 | 47 | 1: vld1.64 {q0}, [r1], r2 |
| 48 | vld1.64 {d2, d3}, [r1], r2 | 48 | vld1.64 {q1}, [r1], r2 |
| 49 | vld1.64 {d4, d5}, [r1], r2 | 49 | vld1.64 {q2}, [r1], r2 |
| 50 | pld [r1, r2, lsl #2] | 50 | pld [r1, r2, lsl #2] |
| 51 | vld1.64 {d6, d7}, [r1], r2 | 51 | 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 \avg | 55 | .if \avg |
| 56 | vld1.64 {d16,d17}, [ip,:128], r2 | 56 | vld1.64 {q8}, [r12,:128], r2 |
| 57 | vrhadd.u8 q0, q0, q8 | 57 | vrhadd.u8 q0, q0, q8 |
| 58 | vld1.64 {d18,d19}, [ip,:128], r2 | 58 | vld1.64 {q9}, [r12,:128], r2 |
| 59 | vrhadd.u8 q1, q1, q9 | 59 | vrhadd.u8 q1, q1, q9 |
| 60 | vld1.64 {d20,d21}, [ip,:128], r2 | 60 | vld1.64 {q10}, [r12,:128], r2 |
| 61 | vrhadd.u8 q2, q2, q10 | 61 | vrhadd.u8 q2, q2, q10 |
| 62 | vld1.64 {d22,d23}, [ip,:128], r2 | 62 | vld1.64 {q11}, [r12,:128], r2 |
| 63 | vrhadd.u8 q3, q3, q11 | 63 | vrhadd.u8 q3, q3, q11 |
| 64 | .endif | 64 | .endif |
| 65 | subs r3, r3, #4 | 65 | subs r3, r3, #4 |
| 66 | vst1.64 {d0, d1}, [r0,:128], r2 | 66 | vst1.64 {q0}, [r0,:128], r2 |
| 67 | vst1.64 {d2, d3}, [r0,:128], r2 | 67 | vst1.64 {q1}, [r0,:128], r2 |
| 68 | vst1.64 {d4, d5}, [r0,:128], r2 | 68 | vst1.64 {q2}, [r0,:128], r2 |
| 69 | vst1.64 {d6, d7}, [r0,:128], r2 | 69 | vst1.64 {q3}, [r0,:128], r2 |
| 70 | bne 1b | 70 | bne 1b |
| 71 | bx lr | 71 | bx lr |
| 72 | .endm | 72 | .endm |
| 73 | 73 | ||
| 74 | .macro pixels16_x2 vhadd=vrhadd.u8 | 74 | .macro pixels16_x2 rnd=1, avg=0 |
| 75 | 1: vld1.64 {d0-d2}, [r1], r2 | 75 | 1: vld1.64 {d0-d2}, [r1], r2 |
| 76 | vld1.64 {d4-d6}, [r1], r2 | 76 | vld1.64 {d4-d6}, [r1], r2 |
| 77 | pld [r1] | 77 | pld [r1] |
| 78 | pld [r1, r2] | 78 | pld [r1, r2] |
| 79 | subs r3, r3, #2 | 79 | subs r3, r3, #2 |
| 80 | vext.8 q1, q0, q1, #1 | 80 | vext.8 q1, q0, q1, #1 |
| 81 | \vhadd q0, q0, q1 | 81 | avg q0, q0, q1 |
| 82 | vext.8 q3, q2, q3, #1 | 82 | vext.8 q3, q2, q3, #1 |
| 83 | \vhadd q2, q2, q3 | 83 | avg q2, q2, q3 |
| 84 | vst1.64 {d0, d1}, [r0,:128], r2 | 84 | .if \avg |
| 85 | vst1.64 {d4, d5}, [r0,:128], r2 | 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 | bne 1b | 93 | bne 1b |
| 87 | bx lr | 94 | bx lr |
| 88 | .endm | 95 | .endm |
| 89 | 96 | ||
| 90 | .macro pixels16_y2 vhadd=vrhadd.u8 | 97 | .macro pixels16_y2 rnd=1, avg=0 |
| 91 | vld1.64 {d0, d1}, [r1], r2 | 98 | vld1.64 {q0}, [r1], r2 |
| 92 | vld1.64 {d2, d3}, [r1], r2 | 99 | vld1.64 {q1}, [r1], r2 |
| 93 | 1: subs r3, r3, #2 | 100 | 1: subs r3, r3, #2 |
| 94 | \vhadd q2, q0, q1 | 101 | avg q2, q0, q1 |
| 95 | vld1.64 {d0, d1}, [r1], r2 | 102 | vld1.64 {q0}, [r1], r2 |
| 96 | \vhadd q3, q0, q1 | 103 | avg q3, q0, q1 |
| 97 | vld1.64 {d2, d3}, [r1], r2 | 104 | 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], r2 | 107 | .if \avg |
| 101 | vst1.64 {d6, d7}, [r0,:128], r2 | 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 | bne 1b | 116 | bne 1b |
| 103 | bx lr | 117 | bx lr |
| 104 | .endm | 118 | .endm |
| 105 | 119 | ||
| 106 | .macro pixels16_xy2 vshrn=vrshrn.u16 no_rnd=0 | 120 | .macro pixels16_xy2 rnd=1, avg=0 |
| 107 | vld1.64 {d0-d2}, [r1], r2 | 121 | vld1.64 {d0-d2}, [r1], r2 |
| 108 | vld1.64 {d4-d6}, [r1], r2 | 122 | vld1.64 {d4-d6}, [r1], r2 |
| 109 | .if \no_rnd | 123 | .ifeq \rnd |
| 110 | vmov.i16 q13, #1 | 124 | vmov.i16 q13, #1 |
| 111 | .endif | 125 | .endif |
| 112 | pld [r1] | 126 | pld [r1] |
| 113 | pld [r1, r2] | 127 | pld [r1, r2] |
| 114 | vext.8 q1, q0, q1, #1 | 128 | vext.8 q1, q0, q1, #1 |
| @@ -118,109 +132,129 @@ endfunc · 3 unmodified lines | |||
| 118 | vaddl.u8 q9, d4, d6 | 132 | vaddl.u8 q9, d4, d6 |
| 119 | vaddl.u8 q11, d5, d7 | 133 | vaddl.u8 q11, d5, d7 |
| 120 | 1: subs r3, r3, #2 | 134 | 1: subs r3, r3, #2 |
| 121 | vld1.64 {d0-d2}, [r1], r2 | 135 | vld1.64 {d0-d2}, [r1], r2 |
| 122 | vadd.u16 q12, q8, q9 | 136 | vadd.u16 q12, q8, q9 |
| 123 | pld [r1] | 137 | pld [r1] |
| 124 | .if \no_rnd | 138 | .ifeq \rnd |
| 125 | vadd.u16 q12, q12, q13 | 139 | vadd.u16 q12, q12, q13 |
| 126 | .endif | 140 | .endif |
| 127 | vext.8 q15, q0, q1, #1 | 141 | vext.8 q15, q0, q1, #1 |
| 128 | vadd.u16 q1 , q10, q11 | 142 | vadd.u16 q1 , q10, q11 |
| 129 | \vshrn d28, q12, #2 | 143 | shrn d28, q12, #2 |
| 130 | .if \no_rnd | 144 | .ifeq \rnd |
| 131 | vadd.u16 q1, q1, q13 | 145 | vadd.u16 q1, q1, q13 |
| 132 | .endif | 146 | .endif |
| 133 | \vshrn d29, q1, #2 | 147 | 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, d30 | 152 | vaddl.u8 q8, d0, d30 |
| 135 | vld1.64 {d2-d4}, [r1], r2 | 153 | vld1.64 {d2-d4}, [r1], r2 |
| 136 | vaddl.u8 q10, d1, d31 | 154 | vaddl.u8 q10, d1, d31 |
| 137 | vst1.64 {d28,d29}, [r0,:128], r2 | 155 | vst1.64 {q14}, [r0,:128], r2 |
| 138 | vadd.u16 q12, q8, q9 | 156 | vadd.u16 q12, q8, q9 |
| 139 | pld [r1, r2] | 157 | pld [r1, r2] |
| 140 | .if \no_rnd | 158 | .ifeq \rnd |
| 141 | vadd.u16 q12, q12, q13 | 159 | vadd.u16 q12, q12, q13 |
| 142 | .endif | 160 | .endif |
| 143 | vext.8 q2, q1, q2, #1 | 161 | vext.8 q2, q1, q2, #1 |
| 144 | vadd.u16 q0, q10, q11 | 162 | vadd.u16 q0, q10, q11 |
| 145 | \vshrn d30, q12, #2 | 163 | shrn d30, q12, #2 |
| 146 | .if \no_rnd | 164 | .ifeq \rnd |
| 147 | vadd.u16 q0, q0, q13 | 165 | vadd.u16 q0, q0, q13 |
| 148 | .endif | 166 | .endif |
| 149 | \vshrn d31, q0, #2 | 167 | 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, d4 | 172 | vaddl.u8 q9, d2, d4 |
| 151 | vaddl.u8 q11, d3, d5 | 173 | vaddl.u8 q11, d3, d5 |
| 152 | vst1.64 {d30,d31}, [r0,:128], r2 | 174 | vst1.64 {q15}, [r0,:128], r2 |
| 153 | bgt 1b | 175 | bgt 1b |
| 154 | bx lr | 176 | bx lr |
| 155 | .endm | 177 | .endm |
| 156 | 178 | ||
| 157 | .macro pixels8 avg=0 | 179 | .macro pixels8 rnd=1, avg=0 |
| 158 | 1: vld1.64 {d0}, [r1], r2 | 180 | 1: vld1.64 {d0}, [r1], r2 |
| 159 | vld1.64 {d1}, [r1], r2 | 181 | vld1.64 {d1}, [r1], r2 |
| 160 | vld1.64 {d2}, [r1], r2 | 182 | vld1.64 {d2}, [r1], r2 |
| 161 | pld [r1, r2, lsl #2] | 183 | pld [r1, r2, lsl #2] |
| 162 | vld1.64 {d3}, [r1], r2 | 184 | 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 \avg | 188 | .if \avg |
| 167 | vld1.64 {d4}, [r0,:64], r2 | 189 | vld1.64 {d4}, [r0,:64], r2 |
| 168 | vrhadd.u8 d0, d0, d4 | 190 | vrhadd.u8 d0, d0, d4 |
| 169 | vld1.64 {d5}, [r0,:64], r2 | 191 | vld1.64 {d5}, [r0,:64], r2 |
| 170 | vrhadd.u8 d1, d1, d5 | 192 | vrhadd.u8 d1, d1, d5 |
| 171 | vld1.64 {d6}, [r0,:64], r2 | 193 | vld1.64 {d6}, [r0,:64], r2 |
| 172 | vrhadd.u8 d2, d2, d6 | 194 | vrhadd.u8 d2, d2, d6 |
| 173 | vld1.64 {d7}, [r0,:64], r2 | 195 | vld1.64 {d7}, [r0,:64], r2 |
| 174 | vrhadd.u8 d3, d3, d7 | 196 | vrhadd.u8 d3, d3, d7 |
| 175 | sub r0, r0, r2, lsl #2 | 197 | sub r0, r0, r2, lsl #2 |
| 176 | .endif | 198 | .endif |
| 177 | subs r3, r3, #4 | 199 | subs r3, r3, #4 |
| 178 | vst1.64 {d0}, [r0,:64], r2 | 200 | vst1.64 {d0}, [r0,:64], r2 |
| 179 | vst1.64 {d1}, [r0,:64], r2 | 201 | vst1.64 {d1}, [r0,:64], r2 |
| 180 | vst1.64 {d2}, [r0,:64], r2 | 202 | vst1.64 {d2}, [r0,:64], r2 |
| 181 | vst1.64 {d3}, [r0,:64], r2 | 203 | vst1.64 {d3}, [r0,:64], r2 |
| 182 | bne 1b | 204 | bne 1b |
| 183 | bx lr | 205 | bx lr |
| 184 | .endm | 206 | .endm |
| 185 | 207 | ||
| 186 | .macro pixels8_x2 vhadd=vrhadd.u8 | 208 | .macro pixels8_x2 rnd=1, avg=0 |
| 187 | 1: vld1.64 {d0, d1}, [r1], r2 | 209 | 1: vld1.64 {q0}, [r1], r2 |
| 188 | vext.8 d1, d0, d1, #1 | 210 | vext.8 d1, d0, d1, #1 |
| 189 | vld1.64 {d2, d3}, [r1], r2 | 211 | vld1.64 {q1}, [r1], r2 |
| 190 | vext.8 d3, d2, d3, #1 | 212 | vext.8 d3, d2, d3, #1 |
| 191 | pld [r1] | 213 | pld [r1] |
| 192 | pld [r1, r2] | 214 | pld [r1, r2] |
| 193 | subs r3, r3, #2 | 215 | subs r3, r3, #2 |
| 194 | vswp d1, d2 | 216 | vswp d1, d2 |
| 195 | \vhadd q0, q0, q1 | 217 | avg q0, q0, q1 |
| 196 | vst1.64 {d0}, [r0,:64], r2 | 218 | .if \avg |
| 197 | vst1.64 {d1}, [r0,:64], r2 | 219 | 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 1b | 226 | bne 1b |
| 199 | bx lr | 227 | bx lr |
| 200 | .endm | 228 | .endm |
| 201 | 229 | ||
| 202 | .macro pixels8_y2 vhadd=vrhadd.u8 | 230 | .macro pixels8_y2 rnd=1, avg=0 |
| 203 | vld1.64 {d0}, [r1], r2 | 231 | vld1.64 {d0}, [r1], r2 |
| 204 | vld1.64 {d1}, [r1], r2 | 232 | vld1.64 {d1}, [r1], r2 |
| 205 | 1: subs r3, r3, #2 | 233 | 1: subs r3, r3, #2 |
| 206 | \vhadd d4, d0, d1 | 234 | avg d4, d0, d1 |
| 207 | vld1.64 {d0}, [r1], r2 | 235 | vld1.64 {d0}, [r1], r2 |
| 208 | \vhadd d5, d0, d1 | 236 | avg d5, d0, d1 |
| 209 | vld1.64 {d1}, [r1], r2 | 237 | 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], r2 | 240 | .if \avg |
| 213 | vst1.64 {d5}, [r0,:64], r2 | 241 | 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 1b | 248 | bne 1b |
| 215 | bx lr | 249 | bx lr |
| 216 | .endm | 250 | .endm |
| 217 | 251 | ||
| 218 | .macro pixels8_xy2 vshrn=vrshrn.u16 no_rnd=0 | 252 | .macro pixels8_xy2 rnd=1, avg=0 |
| 219 | vld1.64 {d0, d1}, [r1], r2 | 253 | vld1.64 {q0}, [r1], r2 |
| 220 | vld1.64 {d2, d3}, [r1], r2 | 254 | vld1.64 {q1}, [r1], r2 |
| 221 | .if \no_rnd | 255 | .ifeq \rnd |
| 222 | vmov.i16 q11, #1 | 256 | vmov.i16 q11, #1 |
| 223 | .endif | 257 | .endif |
| 224 | pld [r1] | 258 | pld [r1] |
| 225 | pld [r1, r2] | 259 | pld [r1, r2] |
| 226 | vext.8 d4, d0, d1, #1 | 260 | vext.8 d4, d0, d1, #1 |
| @@ -228,70 +262,101 @@ endfunc · 1 unmodified line | |||
| 228 | vaddl.u8 q8, d0, d4 | 262 | vaddl.u8 q8, d0, d4 |
| 229 | vaddl.u8 q9, d2, d6 | 263 | vaddl.u8 q9, d2, d6 |
| 230 | 1: subs r3, r3, #2 | 264 | 1: subs r3, r3, #2 |
| 231 | vld1.64 {d0, d1}, [r1], r2 | 265 | vld1.64 {q0}, [r1], r2 |
| 232 | pld [r1] | 266 | pld [r1] |
| 233 | vadd.u16 q10, q8, q9 | 267 | vadd.u16 q10, q8, q9 |
| 234 | vext.8 d4, d0, d1, #1 | 268 | vext.8 d4, d0, d1, #1 |
| 235 | .if \no_rnd | 269 | .ifeq \rnd |
| 236 | vadd.u16 q10, q10, q11 | 270 | vadd.u16 q10, q10, q11 |
| 237 | .endif | 271 | .endif |
| 238 | vaddl.u8 q8, d0, d4 | 272 | vaddl.u8 q8, d0, d4 |
| 239 | \vshrn d5, q10, #2 | 273 | shrn d5, q10, #2 |
| 240 | vld1.64 {d2, d3}, [r1], r2 | 274 | vld1.64 {q1}, [r1], r2 |
| 241 | vadd.u16 q10, q8, q9 | 275 | vadd.u16 q10, q8, q9 |
| 242 | pld [r1, r2] | 276 | pld [r1, r2] |
| 243 | .if \no_rnd | 277 | .if \avg |
| 278 | vld1.8 {d7}, [r0,:64] | ||
| 279 | vrhadd.u8 d5, d5, d7 | ||
| 280 | .endif | ||
| 281 | .ifeq \rnd | ||
| 244 | vadd.u16 q10, q10, q11 | 282 | vadd.u16 q10, q10, q11 |
| 245 | .endif | 283 | .endif |
| 246 | vst1.64 {d5}, [r0,:64], r2 | 284 | vst1.64 {d5}, [r0,:64], r2 |
| 247 | \vshrn d7, q10, #2 | 285 | 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, #1 | 290 | vext.8 d6, d2, d3, #1 |
| 249 | vaddl.u8 q9, d2, d6 | 291 | vaddl.u8 q9, d2, d6 |
| 250 | vst1.64 {d7}, [r0,:64], r2 | 292 | vst1.64 {d7}, [r0,:64], r2 |
| 251 | bgt 1b | 293 | bgt 1b |
| 252 | bx lr | 294 | bx lr |
| 253 | .endm | 295 | .endm |
| 254 | 296 | ||
| 255 | .macro pixfunc pfx name suf rnd_op args:vararg | 297 | .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 | ||
| 256 | function ff_\pfx\name\suf\()_neon, export=1 | 313 | function ff_\pfx\name\suf\()_neon, export=1 |
| 257 | \name \rnd_op \args | 314 | \name \rnd, \avg |
| 258 | endfunc | 315 | endfunc |
| 259 | .endm | 316 | .purgem avg |
| 317 | .purgem shrn | ||
| 318 | .endm | ||
| 260 | 319 | ||
| 261 | .macro pixfunc2 pfx name args:vararg | 320 | .macro pixfunc2 pfx, name, avg=0 |
| 262 | pixfunc \pfx \name | 321 | pixfunc \pfx, \name, rnd=1, avg=\avg |
| 263 | pixfunc \pfx \name \args | 322 | pixfunc \pfx, \name, _no_rnd, rnd=0, avg=\avg |
| 264 | .endm | 323 | .endm |
| 265 | 324 | ||
| 266 | function ff_put_h264_qpel16_mc00_neon, export=1 | 325 | function ff_put_h264_qpel16_mc00_neon, export=1 |
| 267 | mov r3, #16 | 326 | mov r3, #16 |
| 268 | endfunc | 327 | endfunc |
| 269 | 328 | ||
| 270 | pixfunc put_ pixels16 | 329 | pixfunc put_, pixels16, avg=0 |
| 271 | pixfunc2 put_ pixels16_x2, _no_rnd, vhadd.u8 | 330 | pixfunc2 put_, pixels16_x2, avg=0 |
| 272 | pixfunc2 put_ pixels16_y2, _no_rnd, vhadd.u8 | 331 | pixfunc2 put_, pixels16_y2, avg=0 |
| 273 | pixfunc2 put_ pixels16_xy2, _no_rnd, vshrn.u16, 1 | 332 | pixfunc2 put_, pixels16_xy2, avg=0 |
| 274 | 333 | ||
| 275 | function ff_avg_h264_qpel16_mc00_neon, export=1 | 334 | function ff_avg_h264_qpel16_mc00_neon, export=1 |
| 276 | mov r3, #16 | 335 | mov r3, #16 |
| 277 | endfunc | 336 | endfunc |
| 278 | 337 | ||
| 279 | pixfunc avg_ pixels16,, 1 | 338 | 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 | ||
| 281 | function ff_put_h264_qpel8_mc00_neon, export=1 | 343 | function ff_put_h264_qpel8_mc00_neon, export=1 |
| 282 | mov r3, #8 | 344 | mov r3, #8 |
| 283 | endfunc | 345 | endfunc |
| 284 | 346 | ||
| 285 | pixfunc put_ pixels8 | 347 | pixfunc put_, pixels8, avg=0 |
| 286 | pixfunc2 put_ pixels8_x2, _no_rnd, vhadd.u8 | 348 | pixfunc2 put_, pixels8_x2, avg=0 |
| 287 | pixfunc2 put_ pixels8_y2, _no_rnd, vhadd.u8 | 349 | pixfunc2 put_, pixels8_y2, avg=0 |
| 288 | pixfunc2 put_ pixels8_xy2, _no_rnd, vshrn.u16, 1 | 350 | pixfunc2 put_, pixels8_xy2, avg=0 |
| 289 | 351 | ||
| 290 | function ff_avg_h264_qpel8_mc00_neon, export=1 | 352 | function ff_avg_h264_qpel8_mc00_neon, export=1 |
| 291 | mov r3, #8 | 353 | mov r3, #8 |
| 292 | endfunc | 354 | endfunc |
| 293 | 355 | ||
| 294 | pixfunc avg_ pixels8,, 1 | 356 | 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 | ||
| 296 | function ff_put_pixels_clamped_neon, export=1 | 361 | function ff_put_pixels_clamped_neon, export=1 |
| 297 | vld1.64 {d16-d19}, [r0,:128]! | 362 | vld1.64 {d16-d19}, [r0,:128]! |
| @@ -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_STRICT | 1472 | 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 | ||
| @@ -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); |
| @@ -174,19 +174,25 @@ fail: · 173 unmodified lines | |||
| 174 | return ret; | 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 | static int applehttp_open(URLContext *h, const char *uri, int flags) | 187 | static 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 | ||
| 231 | fail: | 237 | fail: |
| 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 | ||
| 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 | URLProtocol ff_applehttp_protocol = { | 296 | URLProtocol 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 | }; |
| @@ -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 | }; |
| @@ -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 | } else | 79 | } 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 | ||
| 193 | URLProtocol ff_concat_protocol = { | 186 | URLProtocol 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 | }; |
| @@ -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 | ||
| 79 | static int gopher_open(URLContext *h, const char *uri, int flags) | 78 | static 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 | ||
| 124 | URLProtocol ff_gopher_protocol = { | 117 | URLProtocol 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 | }; |
| @@ -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; |
| @@ -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 | */ |
| 71 | static int rtmp_open(URLContext *s, const char *uri, int flags) | 70 | static 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; |
| 109 | fail: | 103 | fail: |
| 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_handle | 163 | .url_get_file_handle = rtmp_get_file_handle, |
| 164 | .priv_data_size = sizeof(RTMP), | ||
| 171 | }; | 165 | }; |
| 172 | 166 | ||
| 173 | URLProtocol ff_rtmpt_protocol = { | 167 | URLProtocol 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_handle | 175 | .url_get_file_handle = rtmp_get_file_handle, |
| 176 | .priv_data_size = sizeof(RTMP), | ||
| 182 | }; | 177 | }; |
| 183 | 178 | ||
| 184 | URLProtocol ff_rtmpe_protocol = { | 179 | URLProtocol 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_handle | 187 | .url_get_file_handle = rtmp_get_file_handle, |
| 188 | .priv_data_size = sizeof(RTMP), | ||
| 193 | }; | 189 | }; |
| 194 | 190 | ||
| 195 | URLProtocol ff_rtmpte_protocol = { | 191 | URLProtocol 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_handle | 199 | .url_get_file_handle = rtmp_get_file_handle, |
| 200 | .priv_data_size = sizeof(RTMP), | ||
| 204 | }; | 201 | }; |
| 205 | 202 | ||
| 206 | URLProtocol ff_rtmps_protocol = { | 203 | URLProtocol 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_handle | 211 | .url_get_file_handle = rtmp_get_file_handle, |
| 212 | .priv_data_size = sizeof(RTMP), | ||
| 215 | }; | 213 | }; |
| @@ -79,16 +79,11 @@ static int md5_close(URLContext *h) · 78 unmodified lines | |||
| 79 | return err; | 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 | URLProtocol ff_md5_protocol = { | 83 | URLProtocol 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 | }; |
| @@ -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 | ||
| 405 | URLProtocol ff_mmsh_protocol = { | 401 | URLProtocol 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 | }; |
| @@ -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 | ||
| 503 | static int mms_open(URLContext *h, const char *uri, int flags) | 502 | static 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 = NULL | 512 | // 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 | ||
| 626 | URLProtocol ff_mmst_protocol = { | 622 | URLProtocol 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 | }; |
| @@ -38,7 +38,8 @@ static int pmp_probe(AVProbeData *p) { · 37 unmodified lines | |||
| 38 | return 0; | 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 | 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 | ||
| 114 | static int pmp_packet(AVFormatContext *s, AVPacket *pkt) { | 114 | static 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 once | 142 | // FIXME: this is a hack that should be removed once |
| 138 | // compute_pkt_fields can handle | 143 | // 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 | ||
| 149 | static int pmp_seek(AVFormatContext *s, int stream_index, | 154 | static 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 now | 158 | // fallback to default seek now |
| @@ -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 | */ |
| 800 | static int rtmp_open(URLContext *s, const char *uri, int flags) | 799 | static 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 | ||
| 999 | URLProtocol ff_rtmp_protocol = { | 994 | URLProtocol 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 | }; |
| @@ -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 | } \ |
| @@ -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 fill | 249 | /* 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. */ |
| 250 | static void rtp_send_samples(AVFormatContext *s1, | 251 | static 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 the | 409 | /* 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: |
| @@ -137,7 +137,7 @@ static void build_udp_url(char *buf, int buf_size, · 136 unmodified lines | |||
| 137 | 137 | ||
| 138 | static int rtp_open(URLContext *h, const char *uri, int flags) | 138 | static 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 | }; |
| @@ -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; |
| @@ -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 | }; |
| @@ -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 | }; |
| @@ -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" |
| @@ -395,26 +395,62 @@ do_audio_enc_dec() { · 394 unmodified lines | |||
| 395 | do_audio_decoding | 395 | do_audio_decoding |
| 396 | } | 396 | } |
| 397 | 397 | ||
| 398 | if [ -n "$do_pcm" ] ; then | 398 | if [ -n "$do_pcm_alaw" ] ; then |
| 399 | do_audio_enc_dec wav s16 pcm_alaw | 399 | do_audio_enc_dec wav s16 pcm_alaw |
| 400 | fi | ||
| 401 | if [ -n "$do_pcm_mulaw" ] ; then | ||
| 400 | do_audio_enc_dec wav s16 pcm_mulaw | 402 | do_audio_enc_dec wav s16 pcm_mulaw |
| 403 | fi | ||
| 404 | if [ -n "$do_pcm_s8" ] ; then | ||
| 401 | do_audio_enc_dec mov u8 pcm_s8 | 405 | do_audio_enc_dec mov u8 pcm_s8 |
| 406 | fi | ||
| 407 | if [ -n "$do_pcm_u8" ] ; then | ||
| 402 | do_audio_enc_dec wav u8 pcm_u8 | 408 | do_audio_enc_dec wav u8 pcm_u8 |
| 409 | fi | ||
| 410 | if [ -n "$do_pcm_s16be" ] ; then | ||
| 403 | do_audio_enc_dec mov s16 pcm_s16be | 411 | do_audio_enc_dec mov s16 pcm_s16be |
| 412 | fi | ||
| 413 | if [ -n "$do_pcm_s16le" ] ; then | ||
| 404 | do_audio_enc_dec wav s16 pcm_s16le | 414 | do_audio_enc_dec wav s16 pcm_s16le |
| 405 | do_audio_enc_dec mkv s16 pcm_s16be | 415 | fi |
| 406 | do_audio_enc_dec mkv s16 pcm_s16le | 416 | if [ -n "$do_pcm_s24be" ] ; then |
| 407 | do_audio_enc_dec mov s32 pcm_s24be | 417 | do_audio_enc_dec mov s32 pcm_s24be |
| 418 | fi | ||
| 419 | if [ -n "$do_pcm_s24le" ] ; then | ||
| 408 | do_audio_enc_dec wav s32 pcm_s24le | 420 | do_audio_enc_dec wav s32 pcm_s24le |
| 409 | #do_audio_enc_dec ??? s32 pcm_u24be #no compatible muxer or demuxer | 421 | fi |
| 410 | #do_audio_enc_dec ??? s32 pcm_u24le #no compatible muxer or demuxer | 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 | do_audio_enc_dec mov s32 pcm_s32be | 430 | do_audio_enc_dec mov s32 pcm_s32be |
| 431 | fi | ||
| 432 | if [ -n "$do_pcm_s32le" ] ; then | ||
| 412 | do_audio_enc_dec wav s32 pcm_s32le | 433 | do_audio_enc_dec wav s32 pcm_s32le |
| 413 | #do_audio_enc_dec ??? s32 pcm_u32be #no compatible muxer or demuxer | 434 | fi |
| 414 | #do_audio_enc_dec ??? s32 pcm_u32le #no compatible muxer or demuxer | 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 | do_audio_enc_dec au flt pcm_f32be | 443 | do_audio_enc_dec au flt pcm_f32be |
| 444 | fi | ||
| 445 | if [ -n "$do_pcm_f32le" ] ; then | ||
| 416 | do_audio_enc_dec wav flt pcm_f32le | 446 | do_audio_enc_dec wav flt pcm_f32le |
| 447 | fi | ||
| 448 | if [ -n "$do_pcm_f64be" ] ; then | ||
| 417 | do_audio_enc_dec au dbl pcm_f64be | 449 | do_audio_enc_dec au dbl pcm_f64be |
| 450 | fi | ||
| 451 | if [ -n "$do_pcm_f64le" ] ; then | ||
| 418 | do_audio_enc_dec wav dbl pcm_f64le | 452 | do_audio_enc_dec wav dbl pcm_f64le |
| 453 | fi | ||
| 454 | if [ -n "$do_pcm_s24daud" ] ; then | ||
| 419 | do_audio_enc_dec 302 s16 pcm_s24daud "-ac 6 -ar 96000" | 455 | do_audio_enc_dec 302 s16 pcm_s24daud "-ac 6 -ar 96000" |
| 420 | fi | 456 | fi |
| @@ -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 | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | ede2da07839a00c255a43129922f2c7b *./tests/data/acodec/pcm_alaw.wav | ||
| 2 | 529258 ./tests/data/acodec/pcm_alaw.wav | ||
| 3 | f323f7551ffad91de8613f44dcb198b6 *./tests/data/pcm_alaw.acodec.out.wav | ||
| 4 | stddev: 101.67 PSNR: 56.19 MAXDIFF: 515 bytes: 1058400/ 1058400 | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | 118ff3dc83c62ce9ce669eef57e55bb2 *./tests/data/acodec/pcm_f32be.au | ||
| 2 | 2116824 ./tests/data/acodec/pcm_f32be.au | ||
| 3 | 64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_f32be.acodec.out.wav | ||
| 4 | stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400 | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | 46f44f86a18984a832206ab9e29a79f2 *./tests/data/acodec/pcm_f32le.wav | ||
| 2 | 2116880 ./tests/data/acodec/pcm_f32le.wav | ||
| 3 | 64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_f32le.acodec.out.wav | ||
| 4 | stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400 | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | 8112296b1ed94f72f20d04b1a54850a7 *./tests/data/acodec/pcm_f64be.au | ||
| 2 | 4233624 ./tests/data/acodec/pcm_f64be.au | ||
| 3 | 64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_f64be.acodec.out.wav | ||
| 4 | stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400 | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | ba17c6d1a270e1333e981f239bf7eb45 *./tests/data/acodec/pcm_f64le.wav | ||
| 2 | 4233680 ./tests/data/acodec/pcm_f64le.wav | ||
| 3 | 64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_f64le.acodec.out.wav | ||
| 4 | stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400 | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | 0c2a55850fb46ad5385a69b15b271f10 *./tests/data/acodec/pcm_mulaw.wav | ||
| 2 | 529258 ./tests/data/acodec/pcm_mulaw.wav | ||
| 3 | 7ae8c3fc804bd574006fd547fe28980c *./tests/data/pcm_mulaw.acodec.out.wav | ||
| 4 | stddev: 103.38 PSNR: 56.04 MAXDIFF: 644 bytes: 1058400/ 1058400 | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | 9686b93d1439fc2df991a004ab0298f4 *./tests/data/acodec/pcm_s16be.mov | ||
| 2 | 1058993 ./tests/data/acodec/pcm_s16be.mov | ||
| 3 | 64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_s16be.acodec.out.wav | ||
| 4 | stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400 | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | 64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/acodec/pcm_s16le.wav | ||
| 2 | 1058446 ./tests/data/acodec/pcm_s16le.wav | ||
| 3 | 64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_s16le.acodec.out.wav | ||
| 4 | stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400 | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | 22c5c3df0a4765e28c205a4fb95b3cdc *./tests/data/acodec/pcm_s24be.mov | ||
| 2 | 1588193 ./tests/data/acodec/pcm_s24be.mov | ||
| 3 | 64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_s24be.acodec.out.wav | ||
| 4 | stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400 | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | 1b75d5198ae789ab3c48f7024e08f4a9 *./tests/data/acodec/pcm_s24daud.302 | ||
| 2 | 10368730 ./tests/data/acodec/pcm_s24daud.302 | ||
| 3 | 4708f86529c594e29404603c64bb208c *./tests/data/pcm_s24daud.acodec.out.wav | ||
| 4 | stddev: 8967.92 PSNR: 17.28 MAXDIFF:42548 bytes: 6911796/ 1058400 | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | a85380fb79b0d4fff38e24ac1e34bb94 *./tests/data/acodec/pcm_s24le.wav | ||
| 2 | 1587668 ./tests/data/acodec/pcm_s24le.wav | ||
| 3 | 64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_s24le.acodec.out.wav | ||
| 4 | stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400 | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | b36ac7a1b4fc28248a565a676e555bd1 *./tests/data/acodec/pcm_s32be.mov | ||
| 2 | 2117393 ./tests/data/acodec/pcm_s32be.mov | ||
| 3 | 64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_s32be.acodec.out.wav | ||
| 4 | stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400 | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | da6ed80f4f40f0082577dea80827e014 *./tests/data/acodec/pcm_s32le.wav | ||
| 2 | 2116868 ./tests/data/acodec/pcm_s32le.wav | ||
| 3 | 64151e4bcc2b717aa5a8454d424d6a1f *./tests/data/pcm_s32le.acodec.out.wav | ||
| 4 | stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 1058400/ 1058400 | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | b78d2a30df75af08ecf86f201281fec2 *./tests/data/acodec/pcm_s8.mov | ||
| 2 | 529793 ./tests/data/acodec/pcm_s8.mov | ||
| 3 | 651d4eb8d98dfcdda96ae6c43d8f156b *./tests/data/pcm_s8.acodec.out.wav | ||
| 4 | stddev: 147.89 PSNR: 52.93 MAXDIFF: 255 bytes: 1058400/ 1058400 | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | 70fecbae732f81143a560c7315eda49a *./tests/data/acodec/pcm_u8.wav | ||
| 2 | 529246 ./tests/data/acodec/pcm_u8.wav | ||
| 3 | 651d4eb8d98dfcdda96ae6c43d8f156b *./tests/data/pcm_u8.acodec.out.wav | ||
| 4 | stddev: 147.89 PSNR: 52.93 MAXDIFF: 255 bytes: 1058400/ 1058400 | ||
| @@ -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 | ||
| @@ -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 | ||