aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/avcodec.c
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2021-03-21 07:26:17 +0100
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2021-03-24 08:00:57 +0100
commite65a5df4faf60f08b39381651b61ace6998eee3d (patch)
treecf36d388aaac8043bee92bf69567dbf07ad0ece3 /libavcodec/avcodec.c
parent88b7d9fd367c16302c9cc5dfbd045a7cc684eca4 (diff)
downloadffmpeg-e65a5df4faf60f08b39381651b61ace6998eee3d.tar.gz
avcodec/avcodec: Update check for identical colorspace/primaries/trc names
If the numerical constants for colorspace, transfer characteristics and color primaries coincide, the current code presumes the corresponding names to be identical and prints only one of them obtained via av_get_colorspace_name(). There are two issues with this: The first is that the underlying assumption is wrong: The names only coincide in the 0-7 range, they differ for more recent additions. The second is that av_get_colorspace_name() is outdated itself; it has not been updated with the names of the newly defined colorspaces. Fix both of this by using the names from av_color_(space|primaries|transfer)_name() and comparing them via strcmp; don't use av_get_colorspace_name() at all. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavcodec/avcodec.c')
-rw-r--r--libavcodec/avcodec.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c
index e0e1e51d8b..0ba93f598d 100644
--- a/libavcodec/avcodec.c
+++ b/libavcodec/avcodec.c
@@ -657,15 +657,15 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
if (enc->colorspace != AVCOL_SPC_UNSPECIFIED ||
enc->color_primaries != AVCOL_PRI_UNSPECIFIED ||
enc->color_trc != AVCOL_TRC_UNSPECIFIED) {
- if (enc->colorspace != (int)enc->color_primaries ||
- enc->colorspace != (int)enc->color_trc) {
+ const char *col = unknown_if_null(av_color_space_name(enc->colorspace));
+ const char *pri = unknown_if_null(av_color_primaries_name(enc->color_primaries));
+ const char *trc = unknown_if_null(av_color_transfer_name(enc->color_trc));
+ if (strcmp(col, pri) || strcmp(col, trc)) {
new_line = 1;
av_strlcatf(detail, sizeof(detail), "%s/%s/%s, ",
- unknown_if_null(av_color_space_name(enc->colorspace)),
- unknown_if_null(av_color_primaries_name(enc->color_primaries)),
- unknown_if_null(av_color_transfer_name(enc->color_trc)));
- } else if (str = av_get_colorspace_name(enc->colorspace))
- av_strlcatf(detail, sizeof(detail), "%s, ", str);
+ col, pri, trc);
+ } else
+ av_strlcatf(detail, sizeof(detail), "%s, ", col);
}
if (enc->field_order != AV_FIELD_UNKNOWN) {