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