aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Vignali <martin.vignali@gmail.com>2018-12-02 21:36:24 +0100
committerMartin Vignali <martin.vignali@gmail.com>2018-12-04 15:17:21 +0100
commite53901ba5ec3284b8d5882df47cbd8d888279220 (patch)
treeed13959abca4c509f2dd8f7b9767f772c077bea4
parentaae7e009b3a91031c4f71141450431384f4b0380 (diff)
downloadffmpeg-e53901ba5ec3284b8d5882df47cbd8d888279220.tar.gz
avcodec/utils : add ff_int_from_list_or_default func
to check valid value, or return default_value
-rw-r--r--libavcodec/internal.h12
-rw-r--r--libavcodec/utils.c19
2 files changed, 31 insertions, 0 deletions
diff --git a/libavcodec/internal.h b/libavcodec/internal.h
index 0c2133f092..f2e6f00ace 100644
--- a/libavcodec/internal.h
+++ b/libavcodec/internal.h
@@ -404,6 +404,18 @@ int ff_alloc_a53_sei(const AVFrame *frame, size_t prefix_len,
*/
int64_t ff_guess_coded_bitrate(AVCodecContext *avctx);
+/**
+ * Check if a value is in the list. If not, return the default value
+ *
+ * @param ctx Context for the log msg
+ * @param val_name Name of the checked value, for log msg
+ * @param array_valid_values Array of valid int, ended with INT_MAX
+ * @param default_value Value return if checked value is not in the array
+ * @return Value or default_value.
+ */
+int ff_int_from_list_or_default(void *ctx, const char * val_name, int val,
+ const int * array_valid_values, int default_value);
+
#if defined(_WIN32) && CONFIG_SHARED && !defined(BUILDING_avcodec)
# define av_export_avcodec __declspec(dllimport)
#else
diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index c4c64a6ca4..2fa811d499 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -2209,3 +2209,22 @@ int64_t ff_guess_coded_bitrate(AVCodecContext *avctx)
return bitrate;
}
+
+int ff_int_from_list_or_default(void *ctx, const char * val_name, int val,
+ const int * array_valid_values, int default_value)
+{
+ int i = 0, ref_val;
+
+ while (1) {
+ ref_val = array_valid_values[i];
+ if (ref_val == INT_MAX)
+ break;
+ if (val == ref_val)
+ return val;
+ i++;
+ }
+ /* val is not a valid value */
+ av_log(ctx, AV_LOG_DEBUG,
+ "%s %d are not supported. Set to default value : %d\n", val_name, val, default_value);
+ return default_value;
+}