[FFmpeg-devel] [PATCH 2/4] all: Replace if (CONFIG_FOO) checks by #if CONFIG_FOO
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Wed Nov 2 02:38:49 EET 2022
L. E. Segovia:
> Continuation of e42aaaf92a4b0c88d60acc12df64c81d0887c26f
>
> Signed-off-by: L. E. Segovia <amy at amyspark.me>
> ---
> fftools/ffprobe.c | 22 ++++++++++++++++++----
> fftools/opt_common.c | 18 +++++++++++++++++-
> libavformat/rtmpproto.c | 24 ++++++++++++++++++------
> 3 files changed, 53 insertions(+), 11 deletions(-)
>
> diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c
> index 9b7e82fd8c..c16c68ee92 100644
> --- a/fftools/ffprobe.c
> +++ b/fftools/ffprobe.c
> @@ -3519,8 +3519,7 @@ static void ffprobe_show_program_version(WriterContext *w)
> }
>
> #define SHOW_LIB_VERSION(libname, LIBNAME) \
> - do { \
> - if (CONFIG_##LIBNAME) { \
> + { \
> unsigned int version = libname##_version(); \
> writer_print_section_header(w, SECTION_ID_LIBRARY_VERSION); \
> print_str("name", "lib" #libname); \
> @@ -3530,20 +3529,35 @@ static void ffprobe_show_program_version(WriterContext *w)
> print_int("version", version); \
> print_str("ident", LIB##LIBNAME##_IDENT); \
> writer_print_section_footer(w); \
> - } \
> - } while (0)
> + }
>
> static void ffprobe_show_library_versions(WriterContext *w)
> {
> writer_print_section_header(w, SECTION_ID_LIBRARY_VERSIONS);
> +#if CONFIG_AVUTIL
> SHOW_LIB_VERSION(avutil, AVUTIL);
> +#endif
> +#if CONFIG_AVCODEC
> SHOW_LIB_VERSION(avcodec, AVCODEC);
> +#endif
> +#if CONFIG_AVFORMAT
> SHOW_LIB_VERSION(avformat, AVFORMAT);
> +#endif
> +#if CONFIG_AVDEVICE
> SHOW_LIB_VERSION(avdevice, AVDEVICE);
> +#endif
> +#if CONFIG_AVFILTER
> SHOW_LIB_VERSION(avfilter, AVFILTER);
> +#endif
> +#if CONFIG_SWSCALE
> SHOW_LIB_VERSION(swscale, SWSCALE);
> +#endif
> +#if CONFIG_SWRESAMPLE
> SHOW_LIB_VERSION(swresample, SWRESAMPLE);
> +#endif
> +#if CONFIG_POSTPROC
> SHOW_LIB_VERSION(postproc, POSTPROC);
> +#endif
1. Several of these checks are unnecessary, as ffprobe has hard
dependencies on avcodec and avformat (and therefore also on avutil).
2. Anyway, a better approach would be to modify the macro along the
lines of PCM_DECODER in libavcodec/pcm.c, so that
SHOW_LIB_VERSION(postproc, POSTPROC) expands to
SHOW_LIB_VERSION_1(postproc, POSTPROC) if CONFIG_POSTPROC is 1 and
SHOW_LIB_VERSION_0(postproc, POSTPROC) if CONFIG_POSTPROC is 0 (you may
presume CONFIG_POSTPROC to be defined and to be either 0 or 1).
SHOW_LIB_VERSION_1 would expand to what the current SHOW_LIB_VERSION
expands to (minus the "if (CONFIG_ ##LIBNAME)" check) and
SHOW_LIB_VERSION_0 would expand to nothing/a null statement or so.
The same approach could be used below.
> writer_print_section_footer(w);
> }
>
> diff --git a/fftools/opt_common.c b/fftools/opt_common.c
> index 8a06df82df..243eb4e3a1 100644
> --- a/fftools/opt_common.c
> +++ b/fftools/opt_common.c
> @@ -154,7 +154,7 @@ static int warned_cfg = 0;
> #define SHOW_COPYRIGHT 8
>
> #define PRINT_LIB_INFO(libname, LIBNAME, flags, level) \
> - if (CONFIG_##LIBNAME) { \
> + { \
> const char *indent = flags & INDENT? " " : ""; \
> if (flags & SHOW_VERSION) { \
> unsigned int version = libname##_version(); \
> @@ -184,14 +184,30 @@ static int warned_cfg = 0;
>
> static void print_all_libs_info(int flags, int level)
> {
> +#if CONFIG_AVUTIL
> PRINT_LIB_INFO(avutil, AVUTIL, flags, level);
> +#endif
> +#if CONFIG_AVCODEC
> PRINT_LIB_INFO(avcodec, AVCODEC, flags, level);
> +#endif
> +#if CONFIG_AVFORMAT
> PRINT_LIB_INFO(avformat, AVFORMAT, flags, level);
> +#endif
> +#if CONFIG_AVDEVICE
> PRINT_LIB_INFO(avdevice, AVDEVICE, flags, level);
> +#endif
> +#if CONFIG_AVFILTER
> PRINT_LIB_INFO(avfilter, AVFILTER, flags, level);
> +#endif
> +#if CONFIG_SWSCALE
> PRINT_LIB_INFO(swscale, SWSCALE, flags, level);
> +#endif
> +#if CONFIG_SWRESAMPLE
> PRINT_LIB_INFO(swresample, SWRESAMPLE, flags, level);
> +#endif
> +#if CONFIG_POSTPROC
> PRINT_LIB_INFO(postproc, POSTPROC, flags, level);
> +#endif
> }
>
> static void print_program_info(int flags, int level)
> diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c
> index f0ef223f05..6d84fcf34f 100644
> --- a/libavformat/rtmpproto.c
> +++ b/libavformat/rtmpproto.c
> @@ -1222,7 +1222,8 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt)
> for (i = 9; i <= RTMP_HANDSHAKE_PACKET_SIZE; i++)
> tosend[i] = av_lfg_get(&rnd) >> 24;
>
> - if (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted) {
> +#if CONFIG_FFRTMPCRYPT_PROTOCOL
> + if (rt->encrypted) {
> /* When the client wants to use RTMPE, we have to change the command
> * byte to 0x06 which means to use encrypted data and we have to set
> * the flash version to at least 9.0.115.0. */
> @@ -1237,6 +1238,7 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt)
> if ((ret = ff_rtmpe_gen_pub_key(rt->stream, tosend + 1)) < 0)
> return ret;
> }
> +#endif
>
> client_pos = rtmp_handshake_imprint_with_digest(tosend + 1, rt->encrypted);
> if (client_pos < 0)
> @@ -1300,7 +1302,8 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt)
> if (ret < 0)
> return ret;
>
> - if (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted) {
> +#if CONFIG_FFRTMPCRYPT_PROTOCOL
> + if (rt->encrypted) {
> /* Compute the shared secret key sent by the server and initialize
> * the RC4 encryption. */
> if ((ret = ff_rtmpe_compute_secret_key(rt->stream, serverdata + 1,
> @@ -1310,6 +1313,7 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt)
> /* Encrypt the signature received by the server. */
> ff_rtmpe_encrypt_sig(rt->stream, signature, digest, serverdata[0]);
> }
> +#endif
>
> if (memcmp(signature, clientdata + RTMP_HANDSHAKE_PACKET_SIZE - 32, 32)) {
> av_log(s, AV_LOG_ERROR, "Signature mismatch\n");
> @@ -1330,25 +1334,30 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt)
> if (ret < 0)
> return ret;
>
> - if (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted) {
> +#if CONFIG_FFRTMPCRYPT_PROTOCOL
> + if (rt->encrypted) {
> /* Encrypt the signature to be send to the server. */
> ff_rtmpe_encrypt_sig(rt->stream, tosend +
> RTMP_HANDSHAKE_PACKET_SIZE - 32, digest,
> serverdata[0]);
> }
> +#endif
>
> // write reply back to the server
> if ((ret = ffurl_write(rt->stream, tosend,
> RTMP_HANDSHAKE_PACKET_SIZE)) < 0)
> return ret;
>
> - if (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted) {
> +#if CONFIG_FFRTMPCRYPT_PROTOCOL
> + if (rt->encrypted) {
> /* Set RC4 keys for encryption and update the keystreams. */
> if ((ret = ff_rtmpe_update_keystream(rt->stream)) < 0)
> return ret;
> }
> +#endif
> } else {
> - if (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted) {
> +#if CONFIG_FFRTMPCRYPT_PROTOCOL
> + if (rt->encrypted) {
> /* Compute the shared secret key sent by the server and initialize
> * the RC4 encryption. */
> if ((ret = ff_rtmpe_compute_secret_key(rt->stream, serverdata + 1,
> @@ -1361,16 +1370,19 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt)
> serverdata[0]);
> }
> }
> +#endif
>
> if ((ret = ffurl_write(rt->stream, serverdata + 1,
> RTMP_HANDSHAKE_PACKET_SIZE)) < 0)
> return ret;
>
> - if (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted) {
> +#if CONFIG_FFRTMPCRYPT_PROTOCOL
> + if (rt->encrypted) {
> /* Set RC4 keys for encryption and update the keystreams. */
> if ((ret = ff_rtmpe_update_keystream(rt->stream)) < 0)
> return ret;
> }
> +#endif
> }
>
> return 0;
More information about the ffmpeg-devel
mailing list