@@ -55,26 +55,41 @@ impl MediaFormat {
55
55
pub fn i32 ( & self , key : & str ) -> Option < i32 > {
56
56
let name = CString :: new ( key) . unwrap ( ) ;
57
57
let mut out = 0 ;
58
- unsafe { ffi:: AMediaFormat_getInt32 ( self . as_ptr ( ) , name. as_ptr ( ) , & mut out) } . then ( || out)
58
+ if unsafe { ffi:: AMediaFormat_getInt32 ( self . as_ptr ( ) , name. as_ptr ( ) , & mut out) } {
59
+ Some ( out)
60
+ } else {
61
+ None
62
+ }
59
63
}
60
64
61
65
pub fn i64 ( & self , key : & str ) -> Option < i64 > {
62
66
let name = CString :: new ( key) . unwrap ( ) ;
63
67
let mut out = 0 ;
64
- unsafe { ffi:: AMediaFormat_getInt64 ( self . as_ptr ( ) , name. as_ptr ( ) , & mut out) } . then ( || out)
68
+ if unsafe { ffi:: AMediaFormat_getInt64 ( self . as_ptr ( ) , name. as_ptr ( ) , & mut out) } {
69
+ Some ( out)
70
+ } else {
71
+ None
72
+ }
65
73
}
66
74
67
75
pub fn f32 ( & self , key : & str ) -> Option < f32 > {
68
76
let name = CString :: new ( key) . unwrap ( ) ;
69
77
let mut out = 0.0 ;
70
- unsafe { ffi:: AMediaFormat_getFloat ( self . as_ptr ( ) , name. as_ptr ( ) , & mut out) } . then ( || out)
78
+ if unsafe { ffi:: AMediaFormat_getFloat ( self . as_ptr ( ) , name. as_ptr ( ) , & mut out) } {
79
+ Some ( out)
80
+ } else {
81
+ None
82
+ }
71
83
}
72
84
73
85
pub fn usize ( & self , key : & str ) -> Option < usize > {
74
86
let name = CString :: new ( key) . unwrap ( ) ;
75
87
let mut out = 0 ;
76
- unsafe { ffi:: AMediaFormat_getSize ( self . as_ptr ( ) , name. as_ptr ( ) , & mut out) }
77
- . then ( || out as usize )
88
+ if unsafe { ffi:: AMediaFormat_getSize ( self . as_ptr ( ) , name. as_ptr ( ) , & mut out) } {
89
+ Some ( out as usize )
90
+ } else {
91
+ None
92
+ }
78
93
}
79
94
80
95
pub fn buffer ( & self , key : & str ) -> Option < & [ u8 ] > {
@@ -136,7 +151,11 @@ impl MediaFormat {
136
151
pub fn f64 ( & self , key : & str ) -> Option < f64 > {
137
152
let name = CString :: new ( key) . unwrap ( ) ;
138
153
let mut out = 0.0 ;
139
- unsafe { ffi:: AMediaFormat_getDouble ( self . as_ptr ( ) , name. as_ptr ( ) , & mut out) } . then ( || out)
154
+ if unsafe { ffi:: AMediaFormat_getDouble ( self . as_ptr ( ) , name. as_ptr ( ) , & mut out) } {
155
+ Some ( out)
156
+ } else {
157
+ None
158
+ }
140
159
}
141
160
142
161
/// Returns (left, top, right, bottom)
@@ -147,7 +166,7 @@ impl MediaFormat {
147
166
let mut top = 0 ;
148
167
let mut right = 0 ;
149
168
let mut bottom = 0 ;
150
- unsafe {
169
+ if unsafe {
151
170
ffi:: AMediaFormat_getRect (
152
171
self . as_ptr ( ) ,
153
172
name. as_ptr ( ) ,
@@ -156,8 +175,11 @@ impl MediaFormat {
156
175
& mut right,
157
176
& mut bottom,
158
177
)
178
+ } {
179
+ Some ( ( left, top, right, bottom) )
180
+ } else {
181
+ None
159
182
}
160
- . then ( || ( left, top, right, bottom) )
161
183
}
162
184
163
185
#[ cfg( feature = "api-level-28" ) ]
0 commit comments