[FFmpeg-trac] #10520(avfilter:new): Fails to build with pocketsphinx 5

FFmpeg trac at avcodec.org
Sun Aug 13 18:35:24 EEST 2023


#10520: Fails to build with pocketsphinx 5
-------------------------------------+-------------------------------------
             Reporter:  Samuel       |                    Owner:  (none)
  Thibault                           |
                 Type:  defect       |                   Status:  new
             Priority:  normal       |                Component:  avfilter
              Version:  unspecified  |               Resolution:
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
Description changed by Samuel Thibault:

Old description:

> Summary of the bug:
> How to reproduce:
> After having installed pocketsphinx version 5.0.2 (from
> https://github.com/cmusphinx/pocketsphinx/), ffmpeg fails to build:
>
> ```
> src/libavfilter/af_asr.c:42:5: error: unknown type name 'cmd_ln_t'
>    42 |     cmd_ln_t *config;
>       |     ^~~~~~~~
> src/libavfilter/af_asr.c: In function 'asr_init':
> src/libavfilter/af_asr.c:110:17: error: implicit declaration of function
> 'cmd_ln_parse_r' [-Werror=implicit-function-declaration]
>   110 |     s->config = cmd_ln_parse_r(NULL, ps_args(), 14, (char
> **)argv, 0);
>       |                 ^~~~~~~~~~~~~~
> src/libavfilter/af_asr.c:110:15: warning: assignment to 'int *' from
> 'int' makes pointer from integer without a cast [-Wint-conversion]
>   110 |     s->config = cmd_ln_parse_r(NULL, ps_args(), 14, (char
> **)argv, 0);
>       |               ^
> src/libavfilter/af_asr.c:115:29: warning: passing argument 1 of
> 'ps_default_search_args' from incompatible pointer type [-Wincompatible-
> pointer-types]
>   115 |     ps_default_search_args(s->config);
>       |                            ~^~~~~~~~
>       |                             |
>       |                             int *
> In file included from src/libavfilter/af_asr.c:21:
> /usr/include/pocketsphinx.h:465:42: note: expected 'ps_config_t *' {aka
> 'struct cmd_ln_s *'} but argument is of type 'int *'
>   465 | void ps_default_search_args(ps_config_t *config);
>       |                             ~~~~~~~~~~~~~^~~~~~
> src/libavfilter/af_asr.c:116:22: warning: passing argument 1 of 'ps_init'
> from incompatible pointer type [-Wincompatible-pointer-types]
>   116 |     s->ps = ps_init(s->config);
>       |                     ~^~~~~~~~
>       |                      |
>       |                      int *
> /usr/include/pocketsphinx.h:498:36: note: expected 'ps_config_t *' {aka
> 'struct cmd_ln_s *'} but argument is of type 'int *'
>   498 | ps_decoder_t *ps_init(ps_config_t *config);
>       |                       ~~~~~~~~~~~~~^~~~~~
> src/libavfilter/af_asr.c: In function 'asr_uninit':
> src/libavfilter/af_asr.c:148:5: error: implicit declaration of function
> 'cmd_ln_free_r' [-Werror=implicit-function-declaration]
>   148 |     cmd_ln_free_r(s->config);
>       |     ^~~~~~~~~~~~~
> ```
>
> This is apparently an intentional API break of pocketsphinx: from
> pocketsphinx.h:
>
> ```
>  * @section faq_sec Frequently Asked Questions
>  *
>  * @subsection faq_api My code no longer compiles! Why?
>  *
>  * Some APIs were intentionally broken by the 5.0.0 release.  The most
>  * likely culprit here is the configuration API, where the old
>  * "options" which started with a `-` are now "parameters" which do
>  * not, and instead of a `cmd_ln_t` it is now a `ps_config_t`.  There
>  * is no backward compatibility, you have to change your code
>  * manually.  This is straightforward for the most part.  For example,
>  * instead of writing:
>  *
>  *     cmdln = cmd_ln_init(NULL, "-samprate", "16000", NULL);
>  *     cmd_ln_set_int32_r(NULL, "-maxwpf", 40);
>  *
>  * You should write:
>  *
>  *     config = ps_config_init(NULL);
>  *     ps_config_set_int(config, "samprate", 16000);
>  *     ps_config_set_int(config, "maxwpf", 40);
> ```
>
> So this needs to be done in ffmpeg.

New description:

 Summary of the bug:
 How to reproduce:
 After having installed pocketsphinx version 5.0.2 (from
 https://github.com/cmusphinx/pocketsphinx/), ffmpeg fails to build:

 {{{
 src/libavfilter/af_asr.c:42:5: error: unknown type name 'cmd_ln_t'
    42 |     cmd_ln_t *config;
       |     ^~~~~~~~
 src/libavfilter/af_asr.c: In function 'asr_init':
 src/libavfilter/af_asr.c:110:17: error: implicit declaration of function
 'cmd_ln_parse_r' [-Werror=implicit-function-declaration]
   110 |     s->config = cmd_ln_parse_r(NULL, ps_args(), 14, (char **)argv,
 0);
       |                 ^~~~~~~~~~~~~~
 src/libavfilter/af_asr.c:110:15: warning: assignment to 'int *' from 'int'
 makes pointer from integer without a cast [-Wint-conversion]
   110 |     s->config = cmd_ln_parse_r(NULL, ps_args(), 14, (char **)argv,
 0);
       |               ^
 src/libavfilter/af_asr.c:115:29: warning: passing argument 1 of
 'ps_default_search_args' from incompatible pointer type [-Wincompatible-
 pointer-types]
   115 |     ps_default_search_args(s->config);
       |                            ~^~~~~~~~
       |                             |
       |                             int *
 In file included from src/libavfilter/af_asr.c:21:
 /usr/include/pocketsphinx.h:465:42: note: expected 'ps_config_t *' {aka
 'struct cmd_ln_s *'} but argument is of type 'int *'
   465 | void ps_default_search_args(ps_config_t *config);
       |                             ~~~~~~~~~~~~~^~~~~~
 src/libavfilter/af_asr.c:116:22: warning: passing argument 1 of 'ps_init'
 from incompatible pointer type [-Wincompatible-pointer-types]
   116 |     s->ps = ps_init(s->config);
       |                     ~^~~~~~~~
       |                      |
       |                      int *
 /usr/include/pocketsphinx.h:498:36: note: expected 'ps_config_t *' {aka
 'struct cmd_ln_s *'} but argument is of type 'int *'
   498 | ps_decoder_t *ps_init(ps_config_t *config);
       |                       ~~~~~~~~~~~~~^~~~~~
 src/libavfilter/af_asr.c: In function 'asr_uninit':
 src/libavfilter/af_asr.c:148:5: error: implicit declaration of function
 'cmd_ln_free_r' [-Werror=implicit-function-declaration]
   148 |     cmd_ln_free_r(s->config);
       |     ^~~~~~~~~~~~~
 }}}

 This is apparently an intentional API break of pocketsphinx: from
 pocketsphinx.h:

 {{{
  * @section faq_sec Frequently Asked Questions
  *
  * @subsection faq_api My code no longer compiles! Why?
  *
  * Some APIs were intentionally broken by the 5.0.0 release.  The most
  * likely culprit here is the configuration API, where the old
  * "options" which started with a `-` are now "parameters" which do
  * not, and instead of a `cmd_ln_t` it is now a `ps_config_t`.  There
  * is no backward compatibility, you have to change your code
  * manually.  This is straightforward for the most part.  For example,
  * instead of writing:
  *
  *     cmdln = cmd_ln_init(NULL, "-samprate", "16000", NULL);
  *     cmd_ln_set_int32_r(NULL, "-maxwpf", 40);
  *
  * You should write:
  *
  *     config = ps_config_init(NULL);
  *     ps_config_set_int(config, "samprate", 16000);
  *     ps_config_set_int(config, "maxwpf", 40);
 }}}

 So this needs to be done in ffmpeg.

--
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/10520#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list