avutil/avutil: make AV_TIME_BASE_Q available in C++

ISO C++ forbids compound-literals. It's not available with MSVC.
This is a known issue from 10 years ago, and that's why there is a
av_get_time_base_q().

Since we have no plan to remove AV_TIME_BASE_Q, just make it
available in C++.

There are multiple choices:
1. Use C++11 syntax: AVRational{1, AV_TIME_BASE}

Users may still use C++98 to write new code. So no.

2. Use av_get_time_base_q().

It's for this purpose. But it's not compile time constants as
AV_TIME_BASE_Q in C.

So I choose av_make_q() as Anton's suggestion.

https://libav-devel.libav.narkive.com/ZQCWfTun/patch-0-2-fix-avutil-h-usage-from-c
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
pull/390/head
Zhao Zhili 1 year ago
parent 1c61aa1a02
commit ba9cd06c76
  1. 3
      doc/APIchanges
  2. 5
      libavutil/avutil.h
  3. 2
      libavutil/version.h

@ -2,6 +2,9 @@ The last version increases of all libraries were on 2023-02-09
API changes, most recent first: API changes, most recent first:
2023-09-19 - xxxxxxxxxx - lavu 58.25.100 - avutil.h
Make AV_TIME_BASE_Q compatible with C++.
2023-09-xx - xxxxxxxxxx - lavf 60 - avformat.h 2023-09-xx - xxxxxxxxxx - lavf 60 - avformat.h
Deprecate AVFMT_FLAG_SHORTEST without replacement. Deprecate AVFMT_FLAG_SHORTEST without replacement.

@ -257,7 +257,12 @@ const char *av_get_media_type_string(enum AVMediaType media_type);
* Internal time base represented as fractional value * Internal time base represented as fractional value
*/ */
#ifdef __cplusplus
/* ISO C++ forbids compound-literals. */
#define AV_TIME_BASE_Q av_make_q(1, AV_TIME_BASE)
#else
#define AV_TIME_BASE_Q (AVRational){1, AV_TIME_BASE} #define AV_TIME_BASE_Q (AVRational){1, AV_TIME_BASE}
#endif
/** /**
* @} * @}

@ -79,7 +79,7 @@
*/ */
#define LIBAVUTIL_VERSION_MAJOR 58 #define LIBAVUTIL_VERSION_MAJOR 58
#define LIBAVUTIL_VERSION_MINOR 24 #define LIBAVUTIL_VERSION_MINOR 25
#define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_MICRO 100
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \

Loading…
Cancel
Save