Bug 40842 - Обновить до >= 57
Summary: Обновить до >= 57
Status: CLOSED NOTABUG
Alias: None
Product: Sisyphus
Classification: Development
Component: libavutil-devel (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Anton Farygin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-09-01 23:20 MSK by Alexey Gladkov
Modified: 2021-09-02 12:31 MSK (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexey Gladkov 2021-09-01 23:20:36 MSK
Новому chromium очень хочется работать с libavutil >= 57. Обновите пакет если можно. Очень не хочется использовать внутреннюю версию.
Comment 1 Anton Farygin 2021-09-02 08:36:23 MSK
Было бы интересно узнать, где они взяли 57-ю версию libavutil.
Comment 2 Alexey Gladkov 2021-09-02 11:21:48 MSK
Может я что-то упускаю. Вот моя проблема: В chromium используется size_t в качестве третьего аргумента av_packet_get_side_data. При использовании системной библиотеки получаю ошибку:

../../media/filters/ffmpeg_demuxer.cc:432:24: error: no matching function for call to 'av_packet_get_side_data'
    uint8_t* id_data = av_packet_get_side_data(
                       ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/libavcodec/packet.h:626:10: note: candidate function not viable: no known conversion from 'size_t *' (aka 'unsigned long *') t
o 'int *' for 3rd argument

В /usr/include/libavcodec/packet.h декларация:

uint8_t* av_packet_get_side_data(const AVPacket *pkt, enum AVPacketSideDataType type,
#if FF_API_BUFFER_SIZE_T
      int *size);
#else
      size_t *size);
#endif

В /usr/include/libavutil/version.h написано:

#define LIBAVUTIL_VERSION_MAJOR 56
...
#ifndef FF_API_BUFFER_SIZE_T
#define FF_API_BUFFER_SIZE_T (LIBAVUTIL_VERSION_MAJOR < 57)
#endif

Я предположил, что раз такое условие включения FF_API_BUFFER_SIZE_T, то должно быть условие переводящее его в false. Выставлять -DFF_API_BUFFER_SIZE_T=0 приведёт к тому, что в место указательня на int хромиум будет передавать указатель на unsigned long, что не выглядит хорошей идеей.

Поэтому я и решил открыть эту багу. Возможно, ты мне что-нибудь подскажешь. Я вполне допускаю, что неправ chromium и нужно использовать их внутреннюю копию библиотеки.
Comment 3 Anton Farygin 2021-09-02 11:39:21 MSK
Если в chromium используется size_t, то похоже, что они перешли на версию ffmpeg из ветки master.

Вот эти условия в декларациях, про которые ты пишешь были добавлены с таким changelog в изменениях:
2021-03-10 - xxxxxxxxxx - lavu 56.68.100 - buffer.h
  Change AVBufferRef related function and struct size parameter and fields
  type to size_t at next major bump.

major bump ещё не случился и у нас собрана самая последняя версия 4.4.

Ты можешь посмотреть, откуда они втащили себе ffmpeg ?

И да, возможно что собирать его с внутренним ffmpeg это хорошая идея, надо смотреть что они ещё в нём меняют.
Comment 4 Alexey Gladkov 2021-09-02 12:23:24 MSK
(Ответ для Anton Farygin на комментарий #3)
> Если в chromium используется size_t, то похоже, что они перешли на версию
> ffmpeg из ветки master.
> 
> Вот эти условия в декларациях, про которые ты пишешь были добавлены с таким
> changelog в изменениях:
> 2021-03-10 - xxxxxxxxxx - lavu 56.68.100 - buffer.h
>   Change AVBufferRef related function and struct size parameter and fields
>   type to size_t at next major bump.
> 
> major bump ещё не случился и у нас собрана самая последняя версия 4.4.

Похоже на то.

> Ты можешь посмотреть, откуда они втащили себе ffmpeg ?

Name: ffmpeg
URL: http://ffmpeg.org/
License: LGPL 2.1
License File: CREDITS.chromium
Upstream Git: git://source.ffmpeg.org/ffmpeg.git
Last Upstream Merge: 8649f5dca6688feb66f787dcf232d42ed20fdb28, May 09 2021

Я долгое время использовал системную библиотеку поскольку у хромиума нет патчий на внутеннюю копию в отличии от остальных внутренних библиотек.

> И да, возможно что собирать его с внутренним ffmpeg это хорошая идея, надо
> смотреть что они ещё в нём меняют.

Это повлечёт свои поблемы, но похоже, что так.

Тогда багу можно закрывать.
Comment 5 Anton Farygin 2021-09-02 12:24:43 MSK
выйдет новый major release - можно будет опять отключить.
Comment 6 Alexey Gladkov 2021-09-02 12:31:23 MSK
(Ответ для Anton Farygin на комментарий #5)
> выйдет новый major release - можно будет опять отключить.

С таким апстримом я смысла не вижу. И так приходится кучу всего вычитывать, чтобы  собрать из "релиз".