@@ -144,7 +144,18 @@ impl Audio {
144
144
panic ! ( "unsupported type" ) ;
145
145
}
146
146
147
- unsafe { slice:: from_raw_parts ( ( * self . as_ptr ( ) ) . data [ index] as * const T , self . samples ( ) ) }
147
+ if self . is_planar ( ) {
148
+ unsafe {
149
+ slice:: from_raw_parts ( ( * self . as_ptr ( ) ) . data [ index] as * const T , self . samples ( ) )
150
+ }
151
+ } else {
152
+ unsafe {
153
+ slice:: from_raw_parts (
154
+ ( * self . as_ptr ( ) ) . data [ 0 ] as * const T ,
155
+ self . samples ( ) * usize:: from ( self . channels ( ) ) ,
156
+ )
157
+ }
158
+ }
148
159
}
149
160
150
161
#[ inline]
@@ -157,8 +168,20 @@ impl Audio {
157
168
panic ! ( "unsupported type" ) ;
158
169
}
159
170
160
- unsafe {
161
- slice:: from_raw_parts_mut ( ( * self . as_mut_ptr ( ) ) . data [ index] as * mut T , self . samples ( ) )
171
+ if self . is_planar ( ) {
172
+ unsafe {
173
+ slice:: from_raw_parts_mut (
174
+ ( * self . as_mut_ptr ( ) ) . data [ index] as * mut T ,
175
+ self . samples ( ) ,
176
+ )
177
+ }
178
+ } else {
179
+ unsafe {
180
+ slice:: from_raw_parts_mut (
181
+ ( * self . as_mut_ptr ( ) ) . data [ 0 ] as * mut T ,
182
+ self . samples ( ) * usize:: from ( self . channels ( ) ) ,
183
+ )
184
+ }
162
185
}
163
186
}
164
187
@@ -171,7 +194,7 @@ impl Audio {
171
194
unsafe {
172
195
slice:: from_raw_parts (
173
196
( * self . as_ptr ( ) ) . data [ index] ,
174
- ( * self . as_ptr ( ) ) . linesize [ index ] as usize ,
197
+ ( * self . as_ptr ( ) ) . linesize [ 0 ] as usize ,
175
198
)
176
199
}
177
200
}
@@ -185,7 +208,7 @@ impl Audio {
185
208
unsafe {
186
209
slice:: from_raw_parts_mut (
187
210
( * self . as_mut_ptr ( ) ) . data [ index] ,
188
- ( * self . as_ptr ( ) ) . linesize [ index ] as usize ,
211
+ ( * self . as_ptr ( ) ) . linesize [ 0 ] as usize ,
189
212
)
190
213
}
191
214
}
0 commit comments