OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CONTENT_COMMON_GPU_MEDIA_AVDA_RETURN_ON_FAILURE_H_ | 5 #ifndef MEDIA_GPU_AVDA_RETURN_ON_FAILURE_H_ |
6 #define CONTENT_COMMON_GPU_MEDIA_AVDA_RETURN_ON_FAILURE_H_ | 6 #define MEDIA_GPU_AVDA_RETURN_ON_FAILURE_H_ |
7 | 7 |
8 #include "media/video/video_decode_accelerator.h" | 8 #include "media/video/video_decode_accelerator.h" |
9 | 9 |
10 // Helper macros for dealing with failure. If |result| evaluates false, emit | 10 // Helper macros for dealing with failure. If |result| evaluates false, emit |
11 // |log| to ERROR, register |error| with the decoder, and return. This will | 11 // |log| to ERROR, register |error| with the decoder, and return. This will |
12 // also transition to the error state, stopping further decoding. | 12 // also transition to the error state, stopping further decoding. |
13 // This is meant to be used only within AndroidVideoDecoder and the various | 13 // This is meant to be used only within AndroidVideoDecoder and the various |
14 // backing strategies. |provider| must support PostError. The varargs | 14 // backing strategies. |provider| must support PostError. The varargs |
15 // can be used for the return value. | 15 // can be used for the return value. |
16 #define RETURN_ON_FAILURE(provider, result, log, error, ...) \ | 16 #define RETURN_ON_FAILURE(provider, result, log, error, ...) \ |
17 do { \ | 17 do { \ |
18 if (!(result)) { \ | 18 if (!(result)) { \ |
19 DLOG(ERROR) << log; \ | 19 DLOG(ERROR) << log; \ |
20 provider->PostError(FROM_HERE, media::VideoDecodeAccelerator::error); \ | 20 provider->PostError(FROM_HERE, media::VideoDecodeAccelerator::error); \ |
21 return __VA_ARGS__; \ | 21 return __VA_ARGS__; \ |
22 } \ | 22 } \ |
23 } while (0) | 23 } while (0) |
24 | 24 |
25 // Similar to the above, with some handy boilerplate savings. The varargs | 25 // Similar to the above, with some handy boilerplate savings. The varargs |
26 // can be used for the return value. | 26 // can be used for the return value. |
27 #define RETURN_IF_NULL(ptr, ...) \ | 27 #define RETURN_IF_NULL(ptr, ...) \ |
28 RETURN_ON_FAILURE(state_provider_, ptr, "Got null for " << #ptr, \ | 28 RETURN_ON_FAILURE(state_provider_, ptr, "Got null for " << #ptr, \ |
29 ILLEGAL_STATE, ##__VA_ARGS__); | 29 ILLEGAL_STATE, ##__VA_ARGS__); |
30 | 30 |
31 // Return null if !ptr. | 31 // Return null if !ptr. |
32 #define RETURN_NULL_IF_NULL(ptr) RETURN_IF_NULL(ptr, 0) | 32 #define RETURN_NULL_IF_NULL(ptr) RETURN_IF_NULL(ptr, 0) |
33 | 33 |
34 #endif // CONTENT_COMMON_GPU_MEDIA_AVDA_RETURN_ON_FAILURE_H_ | 34 #endif // MEDIA_GPU_AVDA_RETURN_ON_FAILURE_H_ |
OLD | NEW |